MSBuild 命令行參考


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 節點的重復使用。 你可以指定以下值:

  • true。 節點在生成完成之后保留,以便后續生成可以使用它們(默認值)。

  • false。 節點在生成完成之后不保留。

節點對應於正在執行的項目。 如果包含 /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 OrderHow 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 響應文件

ms164311.collapse_all(zh-cn,VS.120).gif記錄器的開關

 

開關

縮寫形式

描述

/consoleloggerparameters:

parameters

/clp:parameters

將指定的參數傳遞到控制台記錄器,后者會在控制台窗口中顯示生成信息。 可以指定以下參數:

  • PerformanceSummary。 顯示在任務、目標和項目中所花費的時間。

  • Summary。 在末尾顯示錯誤和警告摘要。

  • NoSummary。 不在末尾顯示錯誤和警告摘要。

  • ErrorsOnly。 僅顯示錯誤。

  • WarningsOnly。 僅顯示警告。

  • NoItemAndPropertyList。 如果詳細級別設置為 diagnostic,則不在每個項目生成開頭顯示項和屬性的列表。

  • ShowCommandLine。 顯示 TaskCommandLineEvent 消息。

  • ShowTimestamp。 將時間戳顯示為任何消息的前綴。

  • ShowEventId。 顯示每個已啟動事件、已完成事件和消息的事件 ID。

  • ForceNoAlign。 不將文本與控制台緩沖區大小對齊。

  • DisableConsoleColor。 將默認控制台顏色用於所有日志記錄消息。

  • DisableMPLogging。 在非多處理器模式下運行時,禁用輸出的多處理器日志記錄樣式。

  • EnableMPLogging。 啟用多處理器日志記錄樣式(即使在非多處理器模式下運行)。 默認情況下,此日志記錄樣式處於啟用狀態。

  • Verbosity。 重寫此記錄器的 /verbosity 設置。

使用分號或逗號分隔多個參數,如以下示例所示:

/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 列出的所有參數。 還可以使用以下一個或多個參數:

  • LogFile。 寫入生成日志的日志文件的路徑。 分布式文件記錄器將此路徑用作其日志文件的名稱的前綴。

  • Append。 確定是將生成日志追加到日志文件還是覆蓋它。 設置該開關時,生成日志將追加到日志文件。 此開關不存在時,將覆蓋現有日志文件的內容。

    如果包含追加開關,則無論它是設置為 true 還是 false,都會追加日志。 如果不包含追加開關,則會覆蓋日志。

    在此例中會覆蓋文件:msbuild myfile.proj /l:FileLogger,Microsoft.Build.Engine;logfile=MyLog.log

    在此例中會追加文件:msbuild myfile.proj /l:FileLogger,Microsoft.Build.Engine;logfile=MyLog.log;append=true

    在此例中會追加文件:msbuild myfile.proj /l:FileLogger,Microsoft.Build.Engine;logfile=MyLog.log;append=false  

  • Encoding。 指定文件的編碼(例如,UTF-8、Unicode 或 ASCII)。

下面的示例為警告和錯誤生成單獨的日志文件:

/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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM