C#中简单Winform程序编译(待验证)

这篇具有很好参考价值的文章主要介绍了C#中简单Winform程序编译(待验证)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、文件架构
C#中简单Winform程序编译(待验证),c#,开发语言
2、MainWindow.xaml

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <Style TargetType="Label">
            <Setter Property="Foreground" Value="#FF2B2B2B"/>
            <Setter Property="FontSize" Value="14"/>
        </Style>
        <Style TargetType="Button">
            <Setter Property="Background" Value="#FF1BA1E2"/>
            <Setter Property="Foreground" Value="#FFFFFFFF"/>
            <Setter Property="FontSize" Value="14"/>
            <Setter Property="Padding" Value="10"/>
            <Setter Property="Margin" Value="10"/>
            <Setter Property="BorderThickness" Value="0"/>
        </Style>
        <Style TargetType="TextBox">
            <Setter Property="FontSize" Value="14"/>
            <Setter Property="Foreground" Value="#FF2B2B2B"/>
            <Setter Property="Padding" Value="10"/>
            <Setter Property="Margin" Value="10"/>
        </Style>
    </Window.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Label Content="C# script:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10 10 0 0"/>
        <TextBox x:Name="txtFilePath" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="120 10 0 0" Width="350" TextWrapping="NoWrap" IsReadOnly="True"/>
        <Button Content="Choose" HorizontalAlignment="Left" Margin="490,10,0,0" VerticalAlignment="Top" Width="75" Click="btnChooseFile_Click"/>
        <Label Content="Output:" Grid.Row="1" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/>
        <TextBox x:Name="txtResult" Grid.Row="2" HorizontalAlignment="Stretch" Margin="10,10,10,10" TextWrapping="Wrap" VerticalAlignment="Stretch" Height="200" IsReadOnly="True" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"/>
        <Button Content="Run" Grid.Row="3" HorizontalAlignment="Left" Margin="10,10,0,10" VerticalAlignment="Bottom" Width="120" Click="btnCompile_Click"/>
        <Button Content="Clear" Grid.Row="3" HorizontalAlignment="Left" Margin="150,10,10,10" VerticalAlignment="Bottom" Width="75" />
    </Grid>
</Window>

3、MainWindow.xaml.cs

namespace WpfApp1
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        private void btnChooseFile_Click(object sender, RoutedEventArgs e)
        {
            Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
            dlg.Filter = "C# files (*.cs)|*.cs";
            bool? result = dlg.ShowDialog();
            if (result.HasValue && result == true)
            {
                // Open document
                string filename = dlg.FileName;
                txtFilePath.Text = filename;
            }
        }

        private void btnCompile_Click(object sender, RoutedEventArgs e)
        {
            CSharpCodeProvider provider = new CSharpCodeProvider();
            CompilerParameters parameters = new CompilerParameters();
            parameters.GenerateExecutable = true;
            parameters.OutputAssembly = "output.exe";
            parameters.GenerateInMemory = false;
            parameters.TreatWarningsAsErrors = false;
            //添加需要引用的dll名字
            parameters.ReferencedAssemblies.AddRange(new string[] { "System.dll", "System.Core.dll", "mscorlib.dll" });


            string filePath = txtFilePath.Text;
            if (!File.Exists(filePath))
            {
                txtResult.Text = "文件不存在,请选择正确的文件路径!";
                return;
            }

            string source = File.ReadAllText(filePath);
            CompilerResults results = provider.CompileAssemblyFromSource(parameters, source);

            if (results.Errors.HasErrors)
            {
                foreach (CompilerError error in results.Errors)
                {
                    txtResult.Text += $"{error.ErrorText}\n";
                }
                return;
            }

            txtResult.Text += $"编译成功!\n";

        }
    }
}

4、测试程序文章来源地址https://www.toymoban.com/news/detail-602913.html

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("This is a Compile Test");
        }
    }
}

到了这里,关于C#中简单Winform程序编译(待验证)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# Winform程序跟随系统启动

       说明:有时候Winform程序,写完了,安装在window服务器上,需要每天重启服务器(担心程序运行旧了就会卡),每次重启后又担心程序没启动,这篇文章可以解决这个问题 Window 10系统测试 设备名称    i7BooK 处理器    Intel(R) Core(TM) i7-6660U CPU @ 2.40GHz   2.40 GHz 机带 RAM    8

    2023年04月09日
    浏览(43)
  • C#桌面程序 winform 集成内置WebApi C# 创建HTTP Web API服务,winform项目创建HTTP WEB服务,不使用IIS业务 C#桌面程序WebApi C#winform集

     在维护旧的项目时,有时需要提供APP连接的需求,就要提供HTTP服务,winform项目就要提供HTTP服务,就不用再去写个c# web的IIS相关的业务了,简化项目的复杂度。只需要简单化实例就可以实现提供HTTP服务

    2024年02月08日
    浏览(52)
  • C# WinForm程序安全彻底退出方法

    本文讲解在C#退出WinForm程序的方法, 目录 4种常用方法 退出实例 1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出; 2.Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(

    2024年02月16日
    浏览(39)
  • C#开发winform&wpf后台捕获鼠标移动事件

    做 WPF和winform的时候,可以在界面上设置鼠标移动事件来检测鼠标移动,如果项目为后期改造这样做的话改动量很大,今天通过另外一种后台调用windows api的方式进行快速捕获和触发,提高开发效率分享给大家。

    2024年02月16日
    浏览(50)
  • C#:WinForm应用程序中用鼠标移动控件位置

    有时候在WinForm程序中,我们需要用鼠标移动程序窗口中的对象(例如图片对象等)的位置,可以通过定义控件的鼠标事件来实现。以命名为pictureBox1的PictureBox控件为例,分别定义它的MouseDown(按下鼠标按钮)、MouseMove(移动鼠标)、MouseUp(释放鼠标按钮)三个事件,代码如

    2024年02月16日
    浏览(44)
  • Visual Studio C# WinForm开发入门(3):各种控件介绍

    窗口就是打开程序我们所面对的一个面板,里面可以添加各种控件,如下图所示,我们可以在属性栏设置其标题名称、图标、大小等。 双击标题框,会生成Load函数,也可以到事件里面去找 Load函数是窗口生成后需要执行的事件函数。 可以在里面加一些初始化函数。 (1)Na

    2024年02月09日
    浏览(56)
  • Visual Studio C# WinForm开发入门(6):TreeView 控件使用

    TreeView控件用树显示节点层次。 例如:顶级目录是根(C:),C盘下的每个子目录都是子节点,而每个子目录又都有自己的子节点 TreeView属性和方法: 属性 说明 CheckBoxes 表示节点旁边是否出现复选框 ImageList 指定一个包含节点图标的ImageList对象。ImageList对象是一个包含Image对象的

    2024年02月02日
    浏览(54)
  • Visual Studio C# WinForm开发入门(5):TabControl 控件使用

    TabContrl选项卡控件可创建标签化窗口,在实际 编程中经常用到,该控件的作用是将相关的组件组合到一系列选项卡页面上。 比如下面的例子,在tabPage1页面和tabPage2页面各放了2个checkBox控件,通过点击不同page即可切换: 1、添加和删除TabControl控件中的选项卡 有两种方法: 第

    2024年02月07日
    浏览(48)
  • WinForm】使用Costura.Fody打包编译成可独立运行的桌面程序

    在建项目的时候要注意,选择 Windows 窗体应用(.NET Framework)或者wpf项目 ,然后打开 在解决方案资源管理器中,选择刚才的项目名,鼠标右键找到并打开 管理NuGet包 ,然后在 浏览 选项卡里,输入一个 Costura.Fody 并查找,有就点安装,安装前需要注意选择支持的对应 版本 和

    2024年03月19日
    浏览(44)
  • C#实例:多功能Windows窗体应用程序Helloworld_WinForm

    有了创建一个Windows窗体应用程序的经验,就可以开始尝试运用更多的控件实现更多丰富的功能界面。以下分享我基于项目Helloworld_WinForm 使用常用C#Windows窗体控件 实现一些小功能。 每一节标题为所用到的控件,全文以实际制作过程为序编制。 1、创建窗体Form 项目创建时会默

    2024年02月04日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包