使用 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
命令代替 csc
。 msbuild
命令可用于构建项目文件,其中包含所有 *.cs
文件的引用。命令如下所示:
msbuild WindowsFormsApplication1.csproj
这使我们不必单独提及所有 C# 代码文件名(无论是在项目根目录还是嵌套子目录中)。构建项目文件,大功告成。
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
命令代替 csc
。 msbuild
命令可用于构建项目文件,其中包含所有 *.cs
文件的引用。命令如下所示:
msbuild WindowsFormsApplication1.csproj
这使我们不必单独提及所有 C# 代码文件名(无论是在项目根目录还是嵌套子目录中)。构建项目文件,大功告成。