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

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

您可以通过后跟带有标识记录器的数字的参数,最多使用十个文件记录器。 例如,若要为警告和错误生成单独的日志文件,请使用 - /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

请参见

其他资源

MSBuild 参考