首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

2.4  使用csc.exe响应文件

可以想象,如果要在命令提示符下构建一个复杂的C#应用程序,那么键入大量的标志以指定被引用程序集和*.cs导入文件,是一项苦不堪言的工作。为了减轻录入负担,C#编译器采用了响应文件response file

C#响应文件包含了在当前构建的编译期间要用到的所有指令。通常约定,这些文件的扩展名为*.rsp假定已经创建了一个包含有以下参数的名为TestApp.rsp的响应文件(注释用#字符标识):

 

# 这是第2章里的TestApp.exe应用程序的响应文件。

 

# 外部程序集引用。

/r:System.Windows.Forms.dll

 

# 用于编译的输出和文件(采用通配符语法)。

/target:exe /out:TestApp.exe *.cs

 

现在,假定该文件与将被编译的C#源代码文件保存在相同的目录里,这样就能按照以下步骤构建完整的应用程序了(注意采用了@符号):

 

csc @TestApp.rsp

 

如果需要,也可以指定多个*.rsp文件作为输入(例如csc @FirstFile.rsp @SecondFile.rsp @ThirdFile.rsp)。如果采用这种方式,要记住编译器会根据所遇到的命令选项做相应的处理!因而,后面*.rsp文件中的命令行参数可以覆盖前一个响应文件的选项。

还要注意,在响应文件前的命令行中被显式列出来的标志将被指定的*.rsp文件覆盖,因此,如果键入:

csc /out:MyCoolApp.exe @TestApp.rsp

 

假定有在TestApp.rsp响应文件里/out:TestApp.exe标志,程序集的名字将仍然是TestApp.exe而非MyCoolApp.exe。但是,如果在响应文件后列出了标志,标志将覆盖响应文件里的设置。

注解    /reference标志具有累加性。不管在何处指定了外部程序集(之前、之后或是在响应文件内),最终的结果都是各个引用程序集的累加之和。

默认的响应文件csc.rsp

关于响应文件,最后要说明一点,C#编译器有一个相关联的默认响应文件(csc.rsp),该默认响应文件与csc.exe同处在一个目录里(例如C:\Windows\Microsoft.NET\Framework\v2.0.50215)。如果用记事本打开这个文件,将发现无数的.NET程序集已经使用/r:标志被指定。

当用csc.exe构建C#程序时,该文件将自动被引用,即使你提供了一个自定义的*.rsp文件。假定有默认的响应文件存在,当前的TestApp.exe应用程序可以用以下命令集成功地进行编译(System.Windows.Forms.dllcsc.rsp内被引用):

 

csc /out:TestApp.exe *.cs

 

如果希望取消自动读取csc.rsp,可以指定/noconfig选项:

 

csc @TestApp.rsp /noconfig

 

很明显,C#命令行编译器还有很多其他选项,用于控制如何产生结果.NET程序集。如果你希望学习csc.exe功能的更多细节,可以查阅我在http://msdn.microsoft.com上发表的文章Working with the C# 2.0 Command Line Compiler(使用C# 2.0命令行编译器)[1]

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论