MSBuild 命令行参考
MSBuild.exe 用指定的选项生成指定的项目或解决方案文件。
MSBuild.exe [Switches] [ProjectFile]
实参
参数 |
说明 |
---|---|
ProjectFile |
在项目文件中生成指定的目标。 如果未指定项目文件,MSBuild 将在当前工作目录中搜索扩展名以“proj”结尾的文件并使用该文件。 此参数还接受 Visual Studio 2005 解决方案文件。 |
开关
开关 |
说明 |
---|---|
/help |
显示用法信息。 /? 或 /h 也是可接受的。 例如: Msbuild.exe /? |
/nologo |
隐藏启动版权标志和版权消息。 |
/version |
仅显示版本信息。 /ver 也是可接受的。 |
@file |
从文本文件中插入命令行设置。 分别指定每个响应文件。 有关更多信息,请参见 MSBuild 响应文件。 |
/noautoresponse |
不自动包括 MSBuild.rsp 文件。 /noautorsp 也是可接受的。 |
/target:targets |
在此项目中生成这些目标。 请使用分号或逗号分隔多个目标,或者分别指定每个目标。 /t 也是可接受的。 例如: /target:Resources;Compile |
/property:name=value |
设置或重写这些项目级属性,其中 name 是属性名,value 是属性值。 请使用分号或逗号分隔多个属性,或者分别指定每个属性。 /p 也是可接受的。 例如: /property:WarningLevel=2;OutputDir=bin\Debug |
/logger:logger |
指定要用来记录来自 MSBuild 的事件的记录器。 若要指定多个记录器,请分别指定每个记录器。 记录器语法为: [LoggerClass,]LoggerAssembly[;LoggerParameters] LoggerClass 语法为: [PartialOrFullNamespace.]LoggerClassName
注意
如果程序集中恰好只有一个记录器,则不必指定记录器类。
LoggerAssembly 语法为: {AssemblyName[,StrongName] | AssemblyFile} 记录器参数是可选的,并按键入的样式原样传递给记录器。 例如: /logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML |
/distributedlogger:<中心记录器>*<转发记录器> |
使用此记录器记录来自 MSBuild 的事件。 若要指定多个记录器,请分别指定每个记录器。 (缩写形式为 /dl) <记录器> 语法为: [<记录器类>,]<记录器程序集>[;<记录器参数>] <记录器类> 语法为: [<部分或完整命名空间>.]<记录器类名> <记录器程序集> 语法为:{<程序集名称>[,<强名称] | <程序集文件>} <记录器参数> 是可选的,并按键入的样式原样传递给记录器。 (缩写形式:/l) 示例:/dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral /dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll |
/consoleloggerparameters:parameters |
指定要传递给控制台记录器的参数。 /clp 也是可接受的。 可用的参数如下:
|
/verbosity:level |
在生成日志中显示此级别的信息量。 各个记录器根据详细级别显示事件。 还可将记录器配置为忽略详细级别设置。 可用的详细级别有:q[uiet]、m[inimal]、n[ormal]、d[etailed] 和 diag[nostic]。 /v 也是可接受的。 例如: /verbosity:quiet |
/noconsolelogger |
禁用默认的控制台记录器并且不将事件记录到控制台。 /noconlog 也是可接受的。 |
/validate:schema |
验证项目文件,如果验证成功,则将生成项目。 如果未指定 schema,将对照默认架构验证项目。 如果指定了 schema,将对照指定的架构验证项目。 |
/maxcpucount:number |
指定生成中涉及的辅助进程数。 例如:C:\Windows\WinFX\v3.5>msbuild.exe *.proj /maxcpucount:3。 此示例指示 MSBuild 使用三个 MSBuild.exe 进程来生成,这样便可并行生成三个项目。 /m 也是可接受的。 |
/ignoreprojectextensions:<扩展名> |
在确定要生成的项目文件时要忽略的扩展名列表。 使用分号或逗号分隔多个扩展名。 (缩写形式:/ignore)示例:/ignoreprojectextensions:.vcproj,.sln |
/fileLogger |
将生成输出记录到当前目录中的一个文件(“msbuild.log”)中。 文件的位置以及 fileLogger 的其他参数可通过添加“/fileLoggerParameters”开关来指定。 (缩写形式:/fl) |
/distributedFileLogger |
将生成输出记录到多个日志文件中,每个 MSBuild 节点一个日志文件。 这些文件的初始位置是当前目录。 默认情况下,这些文件被称为“MSBuild<节点 ID>.log”。 文件的位置以及 fileLogger 的其他参数可通过添加“/fileLoggerParameters”开关来指定。 如果通过 fileLoggerParameters 开关设置日志文件名,分布式记录器将使用 fileName 作为模板,并将节点 ID 追加到此 fileName 中,以便为每个节点创建一个日志文件。 |
/fileloggerparameters:<参数> |
指定文件记录器和分布式文件记录器的参数。 (缩写形式:/flp) 您可以通过后跟带有标识记录器的数字的参数,最多使用十个文件记录器。 例如,若要为警告和错误生成单独的日志文件,请使用 - /flp1:logfile=errors.txt;errorsonly /flp2:logfile=warnings.txt;warningsonly 可用的参数有: LogFile - 将生成日志写入其中的日志文件的路径。 分布式文件记录器使用此参数作为其日志文件名的前缀。 Append - 确定生成日志是追加到日志文件中还是覆盖日志文件。 设置该开关时,生成日志将追加到日志文件中。 如果不设置该开关,则将覆盖现有日志文件的内容。 默认设置为不追加到日志文件。 Verbosity - 重写默认的详细级别设置。 Encoding - 指定文件的编码,例如 UTF-8。 还可以使用任意控制台记录器参数。 例如:/fileLoggerParameters:LogFile=MyLog.log;Append; Verbosity=diagnostic;Encoding=UTF-8 |
/toolsversion:version |
指定要用于生成项目的工具集版本。 通过此命令,可以使用不同于 Project 元素 (MSBuild) 中所指定的版本的版本来生成项目。 例如: C:\Windows\WinFX\v3.5>msbuild.exe *.proj /ToolsVersion:3.5 /p:Configuration=Debug version 的有效值如下所示:2.0、3.0 和 3.5。 有关工具集的更多信息,请参见针对 .NET Framework 的特定版本进行生成。 |
/nodeReuse:<参数> |
启用或禁用 MSBuild 节点的重用。 参数是: True - 在生成完成后保留节点,并可由后续生成重用。 False - 在生成完成后不保留节点。 (缩写形式:/nr)示例:/nr:true |
备注
若要将参数传递给默认的控制台记录器,请先用 /noconsolelogger 禁用该参数,然后用 /logger 语法指定它。 例如,使用下面的命令行可显示通常仅在诊断详细级别下显示的性能摘要:
msbuild myproject.csproj /noconsolelogger /l:ConsoleLogger,Microsoft.Build.Engine.dll;performancesummary
示例
下面的示例生成 MyProject.proj 项目的 rebuild 目标。
MSBuild.exe MyProject.proj /t:rebuild
可以使用 MSBuild.exe 来执行更复杂的生成。 例如,使用它,可以生成解决方案中的特定项目的特定目标。 下面的示例重新生成 NotInSolutionFolder 项目,并清除 NewFolder 解决方案文件夹中的 InSolutionFolder 项目。
msbuild SlnFolders.sln /t:NotInSolutionfolder:Rebuild;NewFolder\InSolutionFolder:Clean