MSBuild 命令列參考

在使用 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 將會使用電腦上的處理器最大數目。 如需詳細資訊,請參閱使用 MSBuild 同時建置多個專案

下列範例會指示 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)如何:使用多個專案檔內相同的目標

/property:name=value

/p:name=value

設定或覆寫所指定的專案層級屬性,其中 name 是屬性名稱,而 value 是屬性值。 分別指定每個屬性,或使用分號或逗號分隔多個屬性,如下列範例所示:

/property:WarningLevel=2;OutDir=bin\Debug

/target:targets

/t:targets

在專案中建置指定的目標。 分別指定每個目標,或使用分號或逗號分隔多個目標,如下列範例所示:

/target:Resources;Compile

如果您使用這個參數指定任何目標,便會執行這些目標,而不是專案檔中 DefaultTargets 屬性的任何目標。 如需詳細資訊,請參閱目標建置順序如何:指定要優先建置的目標

目標是一組工作。 如需詳細資訊,請參閱MSBuild 目標

/toolsversion:version

/tv:version

指定用來建置專案的工具組版本,如下列範例所示:/toolsversion:3.5

藉由使用這個參數,您可以建置專案,並指定一個有別於Project 項目 (MSBuild) 中所指定的版本。 如需詳細資訊,請參閱覆寫 ToolsVersion 設定

若是 MSBuild 4.5,您可以為 version 指定下列值:2.0、3.5 和 4.0。 如果您指定 4.0,則 VisualStudioVersion 組建屬性會指定要使用哪個子工具組。 如需詳細資訊,請參閱MSBuild Toolset (ToolsVersion) 的<小工具組>一節。

工具組包含用於建置應用程式的工作、目標和工具。 工具包括編譯器,例如 csc.exe 和 vbc.exe。 如需有關工具組的詳細資訊,請參閱 MSBuild Toolset (ToolsVersion)標準和自訂工具組的組態MSBuild 多目標概觀

注意事項注意事項

工具組版本與目標架構的版本不同,它是在其上建置專案來執行的 .NET Framework 版本。如需詳細資訊,請參閱MSBuild 目標 Framework 和目標平台

/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

將您所指定的參數傳遞至主控台記錄器,其會在主控台視窗中顯示組建資訊。 您可以指定下列參數:

  • 效能摘要。 顯示工作、目標及專案所花費的時間。

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

  • 無摘要。 不要在結尾顯示錯誤和警告摘要。

  • 僅限錯誤。 僅顯示錯誤。

  • 僅限警告。 僅顯示警告。

  • 無項目和屬性清單。 如果詳細資訊層級設為 diagnostic,不要在每個專案組件開頭顯示項目和屬性的清單。

  • 顯示命令列。 顯示 TaskCommandLineEvent 訊息。

  • 顯示時間戳記。 顯示時間戳記做為任何訊息的前置詞。

  • 顯示事件識別碼。 顯示每個已啟動事件、已完成事件及訊息的事件識別碼。

  • 強制不對齊。 不要讓文字對齊主控台緩衝區的大小。

  • 停用主控台色彩。 對所有記錄訊息使用預設的主控台色彩。

  • 停用 MP 記錄。 在非多處理器模式中執行時,停用多處理器的輸出記錄樣式。

  • 啟用 MP 記錄。 即使在非多處理器模式中執行時也啟用多記錄器記錄樣式。 這個記錄樣式預設為開啟。

  • 詳細資訊。 覆寫此記錄器的 /verbosity 設定。

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

/consoleloggerparameters:PerformanceSummary;NoSummary /verbosity:minimal

/distributedFileLogger

/dfl

將每個 MSBuild 節點的組建輸出記錄到自己的檔案。 這些檔案的初始位置是目前的目錄。 根據預設,檔案會命名為 "MSBuildNodeId.log"。 您可以使用 /fileLoggerParameters 參數來指定檔案位置及 fileLogger 的其他參數。

如果您使用 /fileLoggerParameters 參數來命名記錄檔,分散式記錄器便會使用該名稱做為範本,並在為每個節點建立記錄檔時,將節點識別碼附加至該名稱。

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

  • 記錄檔。 要寫入組建記錄檔的記錄檔路徑。 分散式檔案記錄器會在這個路徑放上其記錄檔名稱做為前置詞。

  • 附加。 決定是否要將組建記錄檔附加到記錄檔,或者加以覆寫。 在設定這個參數時,會將組建記錄檔附加至記錄檔。 若這個參數不存在,則會覆寫現有記錄檔的內容。

    如果您包含該附加參數,則無論是否設定為 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 

  • 編碼。 指定檔案的編碼 (例如,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

請參閱

參考

一般 MSBuild 專案屬性

其他資源

MSBuild 參考