使用.NET命令行编译器编译项目(如ASP.NET、C#等)(2)

在使用任何 .NET SDK 命令行工具(包括 C# 编译器)之前,需要配置开发计算机以识别它们的存在。最简单的方法是使用 Start | All Programs | Visual Studio 2005 | Visual Studio Tools 菜单选项,启动预配置的 Visual Studio 命令提示。这一特定的控制台能够自动初始化必要的环境变量,而无须您执行任何操作。(Visual Studio .NET 2003 用户需要启动他们各自的命令提示)。

如果您没有 Visual Studio,但是已经安装了 .NET Framework SDK,则可以从 Start | All Programs | Microsoft .NET Framework SDK 2.0 菜单选项启动预配置的命令提示。

如果您希望从任意的 命令提示使用 .NET 命令行工具,则需要手动更新计算机的 Path 变量。做法是,请右键单击桌面上的 My Computer 图标并选择 Properties 菜单选项。从出现的对话框中,单击位于 Advanced 选项卡下面的 Environment Variables 按钮。从出现的对话框中,在 System 变量列表框中的当前 Path 变量的结尾添加以下目录清单(请注意,必须用分号分隔各个条目):

C:\Windows\Microsoft.NET\Framework\v2.0.40607 C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin

上面的列表指向我的当前 .NET 2.0 测试版的路径。您的路径可能因 Visual Studio 和/或 .NET SDK 的安装和版本的不同而略有不同,因此请确保执行完整性检查。

在更新 Path 变量之后,请立即关闭所有对话框和当前打开的任何 Console 窗口,以便提交设置。您现在应当能够从任何命令提示执行 csc.exe 和其他 .NET 工具了。要进行测试,请输入以下命令:

csc -? ildasm -?

如果您看到有大量信息显示出来,那么您就可以继续了。


命令行基础知识

已经能够熟练地在命令行工作的用户在使用 csc.exe 时不会有任何问题,因而可以跳到下一节。但是,如果您使用命令行的次数很有限,那么请让我说明一些基本的详细信息,以便进行必要的准备。

首先,可以使用反斜杠或单个短划线指定 csc.exe 的选项。其次,在 / 或 - 以及随后的标志之间具有额外的空格是非法 的。因此,“-help”是完全正确,而“- help”就行不通了。为了加以说明,让我们使用 help 标志检查完整的命令行选项集:

csc –help csc /help

如果一切正常,则您应当看到所有可能的标志,如图 1 所示。

使用.NET命令行编译器编译项目(如ASP.NET、C#等)

图 1. 帮助标志

很多选项都提供了简写表示法,以便为您节省一些键入时间。假设 help 标志的简写表示法是 ?,则您可以如下所示列出 csc.exe 的选项:

csc –? csc /?

很多选项都需要附加的修饰,例如,目录路径和文件名。这种性质的标志使用冒号将标志与它的修饰分隔开来。例如,/reference 选项要求将 .NET 程序集的名称包括在程序集清单中:

csc /reference:MyLibrary.dll ...

其他标志在性质上是二元 的,因为它们或者被启用 (+),或者被禁用 (-)。二元标志总是默认为它们的禁用状态,因此您通常只需要使用加号标记。例如,要将所有编译警告都视为错误,可以启用 warnaserror 标志:

csc /warnaserror+ ...

标志的顺序无关紧要,但是在指定输入文件集合之前,必须列出所有标志的集合。另外值得说明的是,在修饰和它的关联数据之间具有额外的空格是非法 的。例如,请使用 /reference:MyLibrary.dll,而不要使用 /reference:MyLibrary.dll。


用于指定输入和控制输出的选项

我们将要分析的第一组命令行选项用于指定编译器输入(表 2)和控制得到的输出(表 3)。请注意,下面的表还标记了特定于 C# 2.0 的选项和任何可用的简写表示法。

2. csc.exe 的以输入为中心的选项

输入标志

定义

是否特定于 C# 2.0?


/recurse

 

通知 csc.exe 编译位于项目的子目录结构中的 C# 文件。该标志支持通配符语法。

 

 

/reference (/r)

 

用于指定要在当前编译中引用的外部程序集。

 

否,但是 2.0 编译器提供了别名变体。

 

/addmodule

 

用于指定要包括在多文件程序集中的模块。

 

 

3. csc.exe 的以输出为中心的选项

输出标志

定义

是否特定于 C# 2.0?


/out

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjfzjj.html