MSBuild 命令行参考
Visual Studio 2013
其他版本
使用 MSBuild.exe 生成项目或解决方案文件时,可以包含几个开关来指定过程的各个方面。
MSBuild.exe [Switches] [ProjectFile]
参数 |
描述 |
---|---|
ProjectFile |
在指定项目文件中生成目标。 如果不指定项目文件,则 MSBuild 会在当前工作目录中搜索以“proj”结尾的文件扩展名并使用该文件。 还可以为此参数指定 Visual Studio 解决方案文件。 |
开关 |
缩写形式 |
描述 |
---|---|---|
/help |
/? 或 /h |
显示用法信息。 以下命令是一个示例: msbuild.exe /? |
/detailedsummary |
/ds |
在生成日志末尾显示有关生成的配置以及如何将它们安排到节点中的详细信息。 |
/ignoreprojectextensions:extensions |
/ignore:extensions |
确定要生成的项目文件时忽略指定扩展名。 使用分号或逗号分隔多个扩展名,如以下示例所示: /ignoreprojectextensions:.vcproj,.sln |
/maxcpucount[:number] |
/m[:number] |
指定生成时要使用的最大并发进程数。 如果不包含此开关,则默认值为 1。 如果包含此开关而没有指定值,MSBuild 将使用计算机中的处理器总数作为其值。 有关详细信息,请参阅Building Multiple Projects in Parallel。 下面的示例指示 MSBuild 使用三个 MSBuild 进程进行生成,这允许同时生成三个项目: msbuild myproject.proj /maxcpucount:3 |
/noautoresponse |
/noautorsp |
不自动包含任何 MSBuild.rsp 文件。 |
/nodeReuse:value |
/nr:value |
启用或禁用 MSBuild 节点的重复使用。 你可以指定以下值:
节点对应于正在执行的项目。 如果包含 /maxcpucount 开关,则多个节点可以并发执行。 |
/nologo |
不显示启动版权标志或版权消息。 |
|
/preprocess[:filepath] |
/pp[:filepath] |
通过内联会在生成期间导入的所有文件(标记其边界)创建单一的聚合项目文件。 可以使用此开关更轻松地确定所导入的文件、从中导入文件的位置以及参与生成的文件。 使用此开关时,不生成项目。 如果指定 filepath,则会将聚合项目文件输出到文件。 否则,输出将显示在控制台窗口中。 有关如何使用 Import 元素将项目文件插入到另一个项目文件中的信息,请参阅 Import 元素 (MSBuild) 和How to: Use the Same Target in Multiple Project Files。 |
/property:name=value |
/p:name=value |
设置或重写指定项目级属性,其中 name 是属性名称,value 是属性值。 单独指定每个属性,或使用分号或逗号分隔多个属性,如以下示例所示: /property:WarningLevel=2;OutDir=bin\Debug |
/target:targets |
/t:targets |
在项目中生成指定目标。 单独指定每个目标,或使用分号或逗号分隔多个目标,如以下示例所示: /target:Resources;Compile 如果使用此开关指定任何目标,则它们会代替项目文件中的 DefaultTargets 特性中的任何目标来运行。 有关详细信息,请参阅Target Build Order和How To: Specify Which Target to Build First。 目标是一组任务。 有关详细信息,请参阅MSBuild Targets。 |
/toolsversion:version |
/tv:version |
指定要用于生成项目的工具集的版本,如以下示例所示:/toolsversion:3.5 使用此开关可以生成项目并指定与 Project 元素 (MSBuild) 中指定的版本不同的版本。 有关详细信息,请参阅Overriding ToolsVersion Settings。 对于 MSBuild 4.5,可以为 version 指定以下值:2.0、3.5 和 4.0。 如果指定 4.0,VisualStudioVersion 生成属性会指定要使用的子工具集。 有关详细信息,请参阅 MSBuild Toolset (ToolsVersion) 的“子工具集”一节。 包含用于生成应用程序的任务、目标和工具的工具集。 工具包括编译器例如 csc.exe 和 vbc.exe。 有关工具集的详细信息,请参阅MSBuild Toolset (ToolsVersion)、Standard and Custom Toolset Configurations和 MSBuild Multitargeting Overview。 说明 工具集版本与目标框架不同,后者是生成项目以其其上运行的 .NET Framework 的版本。 有关详细信息,请参阅MSBuild Target Framework and Target Platform。 |
/validate:[schema] |
/val[schema] |
验证项目文件,如果验证成功,则生成项目。 如果没有指定 schema,则针对默认架构验证项目。 如果指定 schema,则针对指定的架构验证项目。 下面的设置是一个示例:/validate:MyExtendedBuildSchema.xsd |
/verbosity:level |
/v:level |
指定要在生成日志中显示的信息量。 每个记录器基于为该记录器设置的详细级别显示事件。 可以指定以下详细级别:q[uiet]、m[inimal]、n[ormal]、d[etailed] 和 diag[nostic]。 下面的设置是一个示例:/verbosity:quiet |
/version |
/ver |
仅显示版本信息。 不生成项目。 |
@file |
从文本文件插入命令行开关。 如果具有多个文件,可单独指定它们。 有关详细信息,请参阅MSBuild 响应文件。 |
记录器的开关
开关 |
缩写形式 |
描述 |
---|---|---|
/consoleloggerparameters: parameters |
/clp:parameters |
将指定的参数传递到控制台记录器,后者会在控制台窗口中显示生成信息。 可以指定以下参数:
使用分号或逗号分隔多个参数,如以下示例所示: /consoleloggerparameters:PerformanceSummary;NoSummary /verbosity:minimal |
/distributedFileLogger |
/dfl |
将每个 MSBuild 节点的生成输出记录到其自己的文件。 这些文件的初始位置是当前目录。 默认情况下,这些文件命名为“MSBuildNodeId.log”。 可以使用 /fileLoggerParameters 开关指定文件位置和 fileLogger 的其他参数。 如果使用 /fileLoggerParameters 开关命名日志文件,则分布式记录器会在为每个节点创建日志文件时使用该名称作为模板并将节点 ID 追加到该名称。 |
/distributedlogger: central logger* forwarding logger |
/dl:central logger*forwarding logger |
记录 MSBuild 中的事件,将不同记录器实例附加到每个节点。 若要指定多个记录器,请分别指定每个记录器。 使用记录器语法指定记录器。 有关记录器语法,请参阅下面的 /logger 开关。 下面的示例演示如何使用此开关: /dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral /dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll |
/fileLogger [number] |
/fl[number] |
将生成输出记录到当前目录中的单个文件。 如果没有指定 number,输出文件名为 msbuild.log。 如果指定 number,输出文件名为 msbuildn.log,其中 n 是 number。 Number 可以是 1 到 9 的数字。 可以使用 /fileLoggerParameters 开关指定文件位置和 fileLogger 的其他参数。 |
/fileloggerparameters:[number] parameters |
/flp:[ number]parameters |
为文件记录器和分布式文件记录器指定任何额外参数。 此开关的存在意味着对应 /filelogger[number] 开关存在。 Number 可以是 1 到 9 的数字。 可以使用为 /consoleloggerparameters 列出的所有参数。 还可以使用以下一个或多个参数:
下面的示例为警告和错误生成单独的日志文件: /flp1:logfile=errors.txt;errorsonly /flp2:logfile=warnings.txt;warningsonly 下面的示例演示其他可能性: /fileLoggerParameters:LogFile=MyLog.log;Append; Verbosity=diagnostic;Encoding=UTF-8 /flp:Summary;Verbosity=minimal;LogFile=msbuild.sum /flp1:warningsonly;logfile=msbuild.wrn /flp2:errorsonly;logfile=msbuild.err |
/logger: logger |
/l:logger |
指定要用于记录 MSBuild 中的事件的记录器。 若要指定多个记录器,请分别指定每个记录器。 将以下语法用于 logger:[LoggerClass,]LoggerAssembly[;LoggerParameters] 将以下语法用于 LoggerClass:[PartialOrFullNamespace.]LoggerClassName 如果程序集恰好包含一个记录器,则不必指定记录器类。 将以下语法用于 LoggerAssembly:{AssemblyName[,StrongName] | AssemblyFile} 记录器参数是可选的,传递给记录器时与输入时完全一致。 下面的示例使用 /logger 开关。 /logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral /logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML |
/noconsolelogger |
/noconlog |
禁用默认控制台记录器,不将事件记录到控制台。 |
下面的示例生成 MyProject.proj 项目的 rebuild 目标。
MSBuild.exe MyProject.proj /t:rebuild
可以使用 MSBuild.exe 执行更复杂的生成。 例如,可以使用它在解决方案中生成特定项目的特定目标。 下面的示例重新生成项目 NotInSolutionFolder 并清理项目 InSolutionFolder(位于 NewFolder 解决方案文件夹中)。
msbuild SlnFolders.sln /t:NotInSolutionfolder:Rebuild;NewFolder\InSolutionFolder:Clean