MSBuild 命令行参考

更新:2007 年 11 月

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 也是可接受的。可用的参数如下:

  • PerformanceSummary:显示任务、目标和项目花费的时间。

  • NoSummary:隐藏在生成结束时显示的错误和警告摘要。

  • NoItemAndPropertyList:在 diagnostic 详细级别下,隐藏在每次开始生成项目时显示的项和属性的列表。

/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)

可用的参数有:

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

请参见

其他资源

MSBuild 参考