将类型生成到模块中

来源:互联网 发布:怎么评价邓小平知乎 编辑:程序博客网 时间:2024/04/28 09:52

 主要解决问题:1. 我们写的CS文件如果编译成EXE呢?

如:创建一个源码文件Program.cs

public sealed class Program{   public static void Main(){System.Console.WriteLine("Hi")}}


 

应用程序定义了Program类型,其中有个名为Main的 public static方法 。 Main引用了System.Console的类型。System.Console是Microsoft已经实现好的类型。用于实现这个类型的各个方法存储在MSCorLib.dll文件中。

将Program.cs编译生成exe文件 执行命令:

csc.exe /out:Program.exe /t:exe /r:MSCorLib.dll Program.cs

这个命令指示C#编译器生成名为Progam.exe 的可执行程序(/out:Program.exe),生成的文件属于Win32控制台应用程序类型(/t[arget]:exe).

MSCorLib.dll 是个比较特殊的文件,因为它包含了所有核心类型:Char,String,Int32等等,且由于这些类型被使用频繁,以至于C#编辑器会自动引用MSCorLib.dll程序集。

其上面 执行命令可简化为:

csc.exe /out:Program.exe /t:exe  Program.cs

由于/out:Program.exe和/t:exe 的命令行开关是C#编辑器默认设定的,所有此命令行还可以继续简化为:

csc.exe Program.cs

 

当然如果你出于某种情况,不希望C#自动引用MSCorLib.dll程序集,那么可以使用 /nostdlib 开关

csc.exe /out:Program.exe /t:exe /nostdlib Program.cs

 

但要注意:因为Microsoft生成MSCorLib.dll程序集自身的时候便已经使用了/nostdlib 此开关。执行以上代码编译器将会报错。

 

2.生成的Program.exe文件又是什么呢?

  首先,它是一个标准的PE(可移植执行体,Portable Executable)文件。这意味着运行32位或64位Windows的一台计算机能加载这个文件,并通过它执行某些操作。
Windows 支持两种类型的应用程序:具有控制用户界面(console user interface ,CUI)的和具有图形用户界面(graphical user interface,GUI)的。 由于指定了/t:exe开关,所以C#编辑器生成的是一个CUI应用程序。使用/t:winexe 开关,则可让C#编辑器生成一个GUI应用程序.

 

原创粉丝点击