Csc 任务

包装 csc.exe,生成可执行 (.exe) 文件、动态链接库(.dll 文件)或者代码模块(.netmodule 文件) 。 有关 csc.exe 的详细信息,请参阅 C# 编译器选项

参数

下表描述了 Csc 任务的参数。

参数 说明
AdditionalLibPaths 可选 String[] 参数。

指定要在其中搜索引用的其他目录。 有关详细信息,请参阅 -lib(C# 编译器选项)
AddModules 可选 String 参数。

指定将构成程序集一部分的一个或多个模块。 有关详细信息,请参阅 (C# 编译器选项)
AllowUnsafeBlocks 可选 Boolean 参数。

如果为 true,则编译使用 unsafe 关键字的代码。 有关详细信息,请参阅 -unsafe(C# 编译器选项)
ApplicationConfiguration 可选 String 参数。

指定包含程序集绑定设置的应用程序配置文件。
BaseAddress 可选 String 参数。

指定要加载 DLL 的首选基址。 DLL 的默认基址由 .NET Framework 公共语言运行时设置。 有关详细信息,请参阅 -baseaddress(C# 编译器选项)
CheckForOverflowUnderflow 可选 Boolean 参数。

指定溢出数据类型边界的整数算法是否导致运行时异常。 有关详细信息,请参阅 -checked(C# 编译器选项)
CodePage 可选 Int32 参数。

指定要用于编译中所有源代码文件的代码页。 有关详细信息,请参阅 -codepage(C# 编译器选项)
DebugType 可选 String 参数。

指定调试类型。 DebugType 可以是 fullpdbonly。 默认值是 full,这使得调试程序能够附加到正在运行的程序中。 指定在调试程序中启动该程序时,pdbonly 启用源代码调试,但正在运行的程序附加到调试程序时,只显示汇编程序。

此参数替代 EmitDebugInformation 参数。

有关详细信息,请参阅 -debug(C# 编译器选项)
DefineConstants 可选 String 参数。

定义预处理器符号。 有关详细信息,请参阅 -define(C# 编译器选项)
DelaySign 可选 Boolean 参数。

如果为 true,则指定仅需要将公钥放在程序集中。 如果为 false,则指定需要完全签名的程序集

此参数无任何效果,除非与 KeyFileKeyContainer 参数配合使用。

有关详细信息,请参阅 -delaysign(C# 编译器选项)
Deterministic 可选 Boolean 参数。

如果为 true,则会导致编译器输出的程序集的二进制内容在整个编译中相同(如果输入相同)。

有关详细信息,请参阅 (C# 编译器选项)
DisabledWarnings 可选 String 参数。

指定要禁用的警告的列表。 有关详细信息,请参阅 nowarn(C# 编译器选项)
DocumentationFile 可选 String 参数。

将文档注释处理到一个 XML 文件中。 有关详细信息,请参阅 doc(C# 编译器选项)
EmbedAllSources 可选 Boolean 参数。

在 PDB 中嵌入所有源文件。 有关详细信息,请参阅 -embed(C# 编译器选项)
EmitDebugInformation 可选 Boolean 参数。

如果为 true,则该任务生成调试信息并将它放置在程序数据库 (pdb) 文件中。 如果为 false,则此任务不发出任何调试信息。 默认值为 false。 有关详细信息,请参阅 -debug(C# 编译器选项)
ErrorReport 可选 String 参数。

提供向 Microsoft 报告 C# 内部错误的简便方法。 此参数可以具有 promptsendnone 的值。 如果该参数设置为 prompt,则内部编译器错误发生时,你将收到一条提示。 该提示让你将一个 Bug 报告以电子方式发送给 Microsoft。 如果该参数设置为 send,则系统将自动发送 Bug 报告。 如果该参数设置为 none,则仅在编译器的文本输出中报告错误。 默认值为 none。 有关详细信息,请参阅 -errorreport(C# 编译器选项)
FileAlignment 可选 Int32 参数。

指定输出文件中各节的大小。 有关详细信息,请参阅 -filealign(C# 编译器选项)
GenerateFullPaths 可选 Boolean 参数。

如果为 true,则指定编译器输出中文件的绝对路径。 如果为 false,则指定文件的名称。 默认值为 false。 有关详细信息,请参阅 -fullpaths(C# 编译器选项)
KeyContainer 可选 String 参数。

指定加密密钥容器的名称。 有关详细信息,请参阅 -keycontainer(C# 编译器选项)
KeyFile 可选 String 参数。

指定含有加密密钥的文件名。 有关详细信息,请参阅 -keyfile(C# 编译器选项)
LangVersion 可选 String 参数。

指定要使用的语言版本。 有关详细信息,请参阅 -langversion(C# 编译器选项)
LinkResources 可选 ITaskItem[] 参数。

创建指向输出文件中的 .NET Framework 资源的链接;资源文件不会放入输出文件中。

传递到此参数的项可以具有名为 LogicalNameAccess 的可选元数据条目。 LogicalName 对应于 /linkresource 开关的 identifier 参数,Access 对应于 accessibility-modifier 参数。 有关详细信息,请参阅 -linkresource(C# 编译器选项)
MainEntryPoint 可选 String 参数。

指定 Main 方法的位置。 有关详细信息,请参阅 -main(C# 编译器选项)
ModuleAssemblyName 可选 String 参数。

指定此模块所属程序集的名称。
NoConfig 可选 Boolean 参数。

如果为 true,则告知编译器不使用 csc.rsp 文件进行编译 。 有关详细信息,请参阅 -noconfig(C# 编译器选项)
NoLogo 可选 Boolean 参数。

如果为 true,则禁止显示编译器横幅信息。 有关详细信息,请参阅 -nologo(C# 编译器选项)
NoStandardLib 可选 Boolean 参数。

如果为 true,则防止导入 mscorlib.dll,这定义了整个 System 命名空间。 如果你想要定义或创建自己的 System 命名空间和对象,请使用此参数。 有关详细信息,请参阅 -nostdlib(C# 编译器选项)
NoWin32Manifest 可选 Boolean 参数。

如果为 true,则不包括默认的 Win32 清单。
Optimize 可选 Boolean 参数。

如果为 true,则启用优化。 如果为 false,则禁用优化。 有关详细信息,请参阅 -optimize(C# 编译器选项)
OutputAssembly 可选 String 输出参数。

指定输出文件的名称。 有关详细信息,请参阅 -out(C# 编译器选项)
OutputRefAssembly 可选 String 参数。

指定输出引用程序集文件的名称。 有关详细信息,请参阅 -refout (C# 编译器选项)
PdbFile 可选 String 参数。

指定调试信息文件名。 默认名称是扩展名为 .pdb 的输出文件名。
Platform 可选 String 参数。

指定将作为输出文件目标的处理器平台。 此参数可以具有 x86x64anycpu 的值。 默认值为 anycpu。 有关详细信息,请参阅 -platform(C# 编译器选项)
References 可选 ITaskItem[] 参数。

促使该任务将公共类型信息从指定项导入到当前项目中。 有关详细信息,请参阅 -reference(C# 编译器选项)

可以通过将元数据 Aliases 添加到原始的“参考”项,在 MSBuild 文件中指定 C# 引用别名。 例如,在以下 Csc 命令行中设置别名“LS1”:

CSC /r:LS1=MyCodeLibrary.dll /r:LS2=MyCodeLibrary2.dll *.cs

将使用:

<Reference Include="MyCodeLibrary"> <Aliases>LS1</Aliases> </Reference>
Resources 可选 ITaskItem[] 参数。

将 .NET Framework 资源嵌入到输出文件。

传递到此参数的项可以具有名为 LogicalNameAccess 的可选元数据条目。 LogicalName 对应于 /resource 开关的 identifier 参数,Access 对应于 accessibility-modifier 参数。 有关详细信息,请参阅 -resource(C# 编译器选项)
ResponseFiles 可选 String 参数。

指定包含此任务命令的响应文件。 有关详细信息,请参阅 @(指定响应文件)
Sources 可选 ITaskItem[] 参数。

指定一个或多个 C# 源文件。
TargetType 可选 String 参数。

指定输出文件的文件格式。 此参数可以具有 librarywinexe 的值,前者将创建代码库 exe,代码库将创建控制台应用程序 module,应用程序将创建一个模块,后者将创建 Windows 程序。 默认值为 library。 有关详细信息,请参阅 -target(C# 编译器选项)
TreatWarningsAsErrors 可选 Boolean 参数。

如果为 true,则将所有警告视为错误。 有关详细信息,请参阅 -warnaserror(C# 编译器选项)
UseHostCompilerIfAvailable 可选 Boolean 参数。

指示该任务使用进程内编译器对象(如果可用)。 仅由 Visual Studio 使用。
Utf8Output 可选 Boolean 参数。

记录使用 UTF-8 编码的编译器输出。 有关详细信息,请参阅 -utf8output(C# 编译器选项)
WarningLevel 可选 Int32 参数。

指定编译器显示的警告级别。 有关详细信息,请参阅 -warn(C# 编译器选项)
WarningsAsErrors 可选 String 参数。

指定将被视为错误的警告的列表。 有关详细信息,请参阅 -warnaserror(C# 编译器选项)

此参数替代 TreatWarningsAsErrors 参数。
WarningsNotAsErrors 可选 String 参数。

指定不被视为错误的警告的列表。 有关详细信息,请参阅 -warnaserror(C# 编译器选项)

只有 TreatWarningsAsErrors 参数设置为 true 时,此参数才有用。
Win32Icon 可选 String 参数。

在程序集中插入 .ico 文件,为输出文件赋予其在“文件资源管理器”中所需的外观 。 有关详细信息,请参阅 -win32icon(C# 编译器选项)
Win32Manifest 可选 String 参数。

指定要包含的 Win32 清单。
Win32Resource 可选 String 参数。

在输出文件中插入 Win32 资源 (.res) 文件 。 有关详细信息,请参阅 -win32res(C# 编译器选项)

ToolTaskExtension 参数

此任务继承自 ToolTaskExtension 类,该类继承自 ToolTask 类,后者本身继承自 Task 类。 此继承链向从它们派生的任务添加了几个参数。

下表介绍基类的参数:

参数 说明
EchoOff 可选 bool 参数。

设置为 true 时,此任务会将 /Q 传递到 cmd.exe 命令行,以便命令行不会复制到 stdout。
EnvironmentVariables 可选的 String 数组参数。

环境变量定义的数组,用分号分隔。 每个定义都应指定用等号分隔的环境变量名称和值。 这些变量会传递到生成的可执行文件以及(有选择地重写)常规环境块。 例如,Variable1=Value1;Variable2=Value2
ExitCode 可选 Int32 输出只读参数。

指定执行的命令提供的退出代码。 如果任务记录了任何错误,但进程的退出代码为 0(成功),则这设置为 -1。
LogStandardErrorAsError 可选 bool 参数。

如果是 true,则在标准错误流上收到的所有消息都记录为错误。
StandardErrorImportance 可选 String 参数。

用于从标准输出流记录文本的重要性。
StandardOutputImportance 可选 String 参数。

用于从标准输出流记录文本的重要性。
Timeout 可选 Int32 参数。

指定终止任务可执行文件之前的时间量(以毫秒为单位)。 默认值是 Int.MaxValue,指示没有超时期限。 超时以毫秒为单位。
ToolExe 可选 string 参数。

项目可能会实现此参数以重写 ToolName。 任务可能会重写此参数以保留 ToolName。
ToolPath 可选 string 参数。

指定任务从中加载基础可执行文件的位置。 如果未指定此参数,则任务会使用与运行 MSBuild 的框架版本对应的 SDK 安装路径。
UseCommandProcessor 可选 bool 参数。

设置为 true 时,此任务会为命令行创建一个批处理文件,并使用命令处理器执行它(而不是直接执行命令)。
YieldDuringToolExecution 可选 bool 参数。

设置为 true 时,此任务会在其任务执行时生成节点。

示例

以下示例使用 Csc 任务来编译 Compile 项集合的源文件中的可执行文件。

<CSC
    Sources="@(Compile)"
    OutputAssembly="$(AppName).exe"
    EmitDebugInformation="true" />

请参阅