MSBuild 命令列參考
MSBuild.exe 會使用指定的選項,建置指定的專案或方案檔。
MSBuild.exe [Switches] [ProjectFile]
引數
引數 |
說明 |
---|---|
ProjectFile |
在專案檔上建置指定的目標。 如果未指定專案檔,MSBuild 就會在目前的工作目錄中尋找副檔名為 "proj" 的檔案來使用。 此引數也會接受 Visual Studio 2005 方案檔。 |
參數
參數 |
說明 |
---|---|
/help |
顯示用法資訊。 /? 或 /h 都是可以接受的選項。 例如: Msbuild.exe /? |
/nologo |
隱藏啟始資訊和著作權訊息。 |
/version |
只顯示版本資訊。 /ver 也是可以接受的選項。 |
@file |
從文字檔插入命令列設定。 個別指定每個回應檔 (Response 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:<central logger>*<forwarding logger> |
使用此記錄器來記錄 MSBuild 的事件。 若要指定多個記錄器,請個別指定每個記錄器。 (簡短形式 /dl) <logger> 語法如下: [<logger class>,]<logger assembly>[;<logger parameters>] <logger class> 語法如下: [<partial or full namespace>.]<logger class name> <logger assembly> 語法如下:{<assembly name>[,<strong name>] | <assembly file>} <logger parameters> 是選擇項,並且會確實以您輸入的內容傳遞給記錄器。 (簡短形式:/l) 例如:/dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral /dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll |
/consoleloggerparameters:parameters |
指定要傳遞給主控台 (Console) 記錄器的參數。 /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:<extensions> |
當判斷要建置哪一個專案檔時,將忽略的副檔名清單。 請以分號或逗號分隔多個副檔名。 (簡短形式:/ignore) 範例:/ignoreprojectextensions:.vcproj,.sln |
/fileLogger |
將建置輸出記錄到目前目錄的單一檔案 ("msbuild.log") 中。 檔案的位置和 fileLogger 的其他參數 (Parameter) 可以藉由加入 "/fileLoggerParameters" 參數 (Switch) 來指定。 (簡短形式:/fl) |
/distributedFileLogger |
將建置輸出記錄到多個記錄檔,每個 MSBuild 節點各有一個記錄檔。 這些檔案一開始會位於目前的目錄中。 檔案預設名為 "MSBuild<nodeid>.log"。 檔案的位置和 fileLogger 的其他參數 (Parameter) 可以藉由加入 "/fileLoggerParameters" 參數 (Switch) 來指定。 如果記錄檔名稱是使用 fileLoggerParameters 參數指定的,分散式記錄器會使用 fileName 做為範本,將節點 ID 附加到這個 fileName 來建立每個節點的記錄檔。 |
/fileloggerparameters:<parameters> |
指定檔案記錄器和分散式檔案記錄器的參數。 (簡短形式:/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:<parameters> |
啟用或停用重複使用 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