(1)/addmodule
指定要在所创建程序集中包含的模块,这是一种创建多文件程序集的简便方法。
(2)/debug
允许生成调试信息。
(3)/define
预处理器指令能直接传给编译器:/define:DEBUG
(4)/delaysign
使用强名的延迟签名构建程序集。
(5)/doc
指定要生成一个包含XML文档的输出文件。
(6)/keyfile
指定.snk文件的路径,该文件中包含用于强签名的密钥对。
(7)/lib
指定/reference选项中包含的程序集所在的位置。
(8)/out
编译所得输出文件的文件名,默认为输入文件名加.exe后缀。
(9)/reference(简写/r)
引用一个外部程序集。
(10)/resource
将资源文件嵌入到创建的程序集中。
(11)/target(简写/t)
指定所创建输出文件的类型:
/t:exe 构建*.exe控制台应用,这是默认输出
/t:library 构建*.dll程序集
/t:module 构建不包含清单的模块(可移植的可执行文件,PE)
/t:winexe 构建*.exe Windows窗体程序集
使用原始编译器的真正意义是,可以同时处理多个文件和程序。
例:有两个C#源文件,client.cs和clientlib.cs
ⅰ:编译多个文件:
C#编译器接受多个输入源文件,并将输出合并为一个程序集
csc /out:client.exe client.cs clientlib.cs
ⅱ:创建和使用代码库
Clientlib中的代码可以放入一个单独的库中,这个库可以由所有客户访问
csc /t:library clientlib.cs
输出是一个名为clientlib.dll的程序集,编译客户代码,并引用这个外部
程序集:
csc /r:clientlib.dll client.cs
输出是一个名为client.exe的程序集,如果使用Ildasm查看,可以看到
单中包含有对clientlib程序集的引用。
ⅲ:创建多文件程序集
与作为一个单独的程序集相比,更好的方式是将clientlib作为一个单独的文件打包到client.exe程序集中。由于程序集中只有一个包含清单的文件,所以首先要将clientlib.cs编译为可移植的可执行模块。为此,要将输出目标设置为module:
csc /t:module clientlib.cs
输出文件是clientlib.netmodule。使用编译器的addmodule选项将它添加到client.exe程序集:
csc /addmodule:clientlib.netmodule client.cs
最后得到的程序集包含两个文件:client.exe和clientlib.netmodule.