【IT168技术文档】
现在你开发用的计算机可以识别csc.exe了,下一个目标就是使用C#命令行编译器和记事本生成名为TestApp.exe的简单的单文件程序集。首先,需要一些源代码。打开记事本并键入以下内容:
完成后把文件以TestApp.cs的名字保存在一个方便的地方(例如C:\CscExample)。现在,我们来了解C#编译器的核心选项。首先要明白如何指定要创建的程序集的名字和类型(例如,控制台应用程序命名为MyShell.exe,代码库命名为MathLib.dll、Windows Forms应用程序命名为MyWinApp.exe,等等)。各种选项可以通过将对应的具体标志作为命令行参数传入csc.exe来选择(如表2-2所示)。// 一个简单的C#应用程序。 using System; class TestApp { public static void Main() { Console.WriteLine("Testing! 1, 2, 3"); } }
为了把TestApp.cs编译成名为TestApp.exe的控制台应用程序,转到包含源代码文件的目录并键入以下命令(注意命令行标志必须位于导入的文件名字前面,不能在后面):
csc /target:exe TestApp.cs
这里没有明确指定/out标志,因而如果TestApp是定义程序入口点(Main()方法)的类,可执行文件将被命名为TestApp.exe。还要清楚的是,大多数C#编译器标志支持缩写版本,例如可以用/t代替/target(程序员可以在命令提示符下键入csc /?来查看所有的缩写):
csc /t:exe TestApp.cs
而且,因为/t:exe标志是C#编译器的默认输出,也可以仅仅通过键入下面的命令来编译TestApp.cs:
csc TestApp.cs

现在TestApp.exe可以从命令行运行了(如图2-1所示)。

引用外部程序集
接下来,让我们考查如何编译一个应用程序,如果它采用了在另一个.NET程序集里定义的类型。说到这里,如果你想知道C#编译器是如何理解对于System.Console类型的引用的,请回忆一下第1章里mscorlib.dll在编译过程期间是如何被自动引用的(如果由于特别的原因希望禁用这个功能,可以指定/nostdlib标志)。
为了阐明引用外部程序集的过程,让我们修改TestApp应用程序,显示一个Windows窗体消息框。打开TestApp.cs文件并做如下修改:
using System; // 一定要加上这一行! using System.Windows.Forms; class TestApp { public static void Main() { Console.WriteLine("Testing! 1, 2, 3"); // 一定要加上这一行! MessageBox.Show("Hello..."); } }