使用csc.exe编译Windows窗体

时间:2017-02-04 09:57:29

标签: c# compiler-options

在他的书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());
 }
 }
}

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

我需要一个项目文件吗?汇编文件?我不明白构建过程。你能解释一下我的基础知识:如何告诉编译器构建两个表单app?

感谢

2 个答案:

答案 0 :(得分:1)

第一种形式(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。

答案 1 :(得分:0)

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

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

注意:包含Program.cs其他编译器无法获取Main入口点非常重要。 /target开关可帮助您创建输出exe作为Windows窗体应用程序。

作为替代方案,您可以使用通配符一次性提及所有文件名称:

csc /target:winexe *.cs

另一个替代选项是在Visual Studio命令提示符上尝试msbuild命令代替csc命令:

msbuild WindowsFormsApplication1.csproj

这使您无需单独提及所有C#代码文件名(无论是在根目录还是子目录中)。只需一个项目文件名就可以了。