CSC.exe把Visual C#程序代码编译成IL文件时,有着很多参数和开关选项。正确的了解和运用这些参数和开关有时会解决一些看似很棘手的问题。下面就通过一张表来大致说明一下这些参数和开关的具体作用。这些参数和开关选项是按照字母顺序来排列的。其中带"*",是一些常用的参数或开关。
选项 用途
@ * 指定响应文件。
/?, /help 在控制台的计算机屏幕上显示编译器的选项
/addmodule 指定一个或多个模块为集会的一部分
/baseaddress指定装入DLL的基础地址
/bugreport 创建一个文件,该文件包含是报告错误更加容易的信息
/checked 如果整数计算溢出数据类型的边界,则在运行时产生一个例外的事件
/codepage 指定代码页以便在编译中使用的所有源代码文件
/debug * 发送调试信息
/define 定义预处理的程序符号
/doc * 把处理的文档注释为XML文件
/fullpaths 指定编译输出文件的反正路径
/incremental 对源代码的文件进行增量编译
/linkresource 把.NET资源链接到集合中
/main 指定Main方法的位置
/nologo 禁止使用编译器的标志信息
/nooutput 编译文件但不输出文件
/nostdlib 不导出标准库(即mscorlib.dll)
/nowarn 编译但编译器并不显示警告功能
/optimize 打开或者关闭优化
/out * 指定输出文件
/recurse 搜索编译源文件的子目录
/reference * 从包含集合的文件中导入元数据
/target * 指定输出文件的格式
/unsafe 编译使用非安全关键字的代码
/warn 设置警告级别
/warnaserror 提升警告为错误
/win32icon 插入一个.ico文件导输出文件中去
/win32res 插入一个Win32资源导输出文件中
具体说明:
一.@
这个选项是用来指定响应文件。响应文件是一种包含了许多编译选项的文件。这些编译选项将和源代码文件一起由编译器进行处理。一般来说此种响应文件是以文本文件形式出现。他的扩展名是.rsp。在响应文件中是用#符号表示开始的注释。
例:以下是一个响应文件resp1.rsp的内容:
# 这是一个简单的响应文件,文件名称为resp1.rsp
#使用方法: csc @resp1.rsp
/target:exe /out:sample.exe sample.cs
此响应文件的作用就是把sample.cs文件编译成sample.exe文件。如果在一次编译中要指定多个响应文件,可以指定多个响应文件选项,如:
@file1.rsp @file2.rsp
二./?和/help
这个选项应该不必多说,那些用过DOS程序的人,大概都会用这个选项。
三./addmodule
本选项是使编译器搜集从用户正在编译的工程到可用文件中所以类型的信息。所有添加了/addmodule的模块在运行时必须与输出文件在同一目录中。这就是说,用户可以在编译时指定任何目录中的模块,但在运行时这个模块必须在应用程序目录中。文件中不能包含汇编名单。例如:如果输出文件用 /taarget:module创建,其元数据可以用/addmodule导入。
例子:把二个模块加入myProject.cs中
csc /addmodule:module1.dll;module2.dll myProject.cs
四./baseaddress
本选项允许用户指定载入DLL时的首选地址,这个首选地址可以是十进制、十六进制、八进制。DLL的缺省首选地址在.Net运行时设置。如果目标文件不是DLL文件,这个选项将被忽略。
例子:把myLibrary.cs 编译程DLL文件,并且当此DLL在.Net运行环境被载入时的地址是0x1111000
csc /baseaddres:0x1111000 /target:library myLibrary.cs
五./bugreport
这个选项用来报告编译时的错误信息。在报告中包含以下内容:
1).编译中所有源代码的一个拷贝
2).在编译中所有的编译选项
3).编译信息,包括编译器、运行时间、操作系统的版本信息
4).编译器输出
5).问题的描述
6).如何解决问题的描述
例子:生成一个bugs.txt文件,并把错误报告放在文件里面
csc /bugrepo