使用 csc.exe 编译 Windows 表单应用程序

Compile a Windows Forms application using csc.exe

Erik Brown 在他的书中写了以下代码 并从命令行编译它:

csc MyForm.cs

[assembly: System.Reflection.AssemblyVersion("1.1")]
namespace MyNamespace
{
    public class MyForm : System.Windows.Forms.Form
    {
        public MyForm()
        {
            this.Text = "Hello Form";
        }

        public static void Main()
        {
            System.Windows.Forms.Application.Run(new MyForm());
        }
    }
}

我想添加另一个表单并从第一个开始调用它。

我需要项目文件吗?汇编文件?我不明白构建过程。你能给我解释一下最基本的知识吗:我如何告诉编译器构建一个双窗体应用程序?

第一种形式(form1.cs):

public class MyForm : System.Windows.Forms.Form
{
    public MyForm()
    {
        this.Text = "Hello Form";
        this.Click += Form_Click;
    }

    public static void Main()
    {
        System.Windows.Forms.Application.Run(new MyForm());
    }

    private void Form_Click(object sender, System.EventArgs e)
    {
        MyForm2 form2 = new MyForm2();
        form2.ShowDialog();
    }
}

第二种形式(form2.cs):

 public class MyForm2 : System.Windows.Forms.Form
 {
     public MyForm2()
     {
         this.Text = "Hello Form 2";
     }
 }

现在从命令行找到您保存这些 .cs 文件的位置,然后 运行:

csc form1.cs form2.cs

它将创建一个 EXE 文件。 运行 它并在表单中单击以打开 form2。

您需要使用Visual Studio (VS) 命令提示符并在您的项目中提及所有Windows 窗体的C# 代码文件名(*.cs)。您必须包括每个表单的代码隐藏文件以及设计器代码隐藏文件。否则编译不成功

示例项目结构如下:

WindowsFormsApplication1.csproj
--Program.cs
--Form1.cs
----Form1.Designer.cs
--Form2.cs
----Form2.Designer.cs

上述项目的编译命令如下所示:

csc /target:winexe Program.cs Form1.cs Form1.Designer.cs Form2.cs Form2.Designer.cs

注意:编译时必须包含Program.cs文件,否则编译器无法获取工程入口点(Main方法) . /target 开关可帮助您将输出 EXE 文件作为基于 GUI 的 Windows 表单应用程序启动。

上面的命令有一个更短的版本,它使用通配符一次性包含所有文件名:

csc /target:winexe *.cs

最简单的替代方法是在 Visual Studio 命令提示符下使用 msbuild 命令代替 cscmsbuild 命令可用于构建项目文件,其中包含所有 *.cs 文件的引用。命令如下所示:

msbuild WindowsFormsApplication1.csproj

这使我们不必单独提及所有 C# 代码文件名(无论是在项目根目录还是嵌套子目录中)。构建项目文件,大功告成。