共用方式為


MSBuild@1 - MSBuild v1 工作

使用此工作以 MSBuild 建置。

備註

有關 MSBuild 的更多資訊,請參見 MSBuild 如何構建專案

語法

# MSBuild v1
# Build with MSBuild.
- task: MSBuild@1
  inputs:
    solution: '**/*.sln' # string. Required. Project. Default: **/*.sln.
    #msbuildLocationMethod: 'version' # 'version' | 'location'. MSBuild. Default: version.
    #msbuildVersion: 'latest' # 'latest' | '17.0' | '16.0' | '15.0' | '14.0' | '12.0' | '4.0'. Optional. Use when msbuildLocationMethod = version. MSBuild Version. Default: latest.
    #msbuildArchitecture: 'x86' # 'x86' | 'x64'. Optional. Use when msbuildLocationMethod = version. MSBuild Architecture. Default: x86.
    #msbuildLocation: # string. Optional. Use when msbuildLocationMethod = location. Path to MSBuild. 
    #platform: # string. Platform. 
    #configuration: # string. Configuration. 
    #msbuildArguments: # string. MSBuild Arguments. 
    #clean: false # boolean. Clean. Default: false.
  # Advanced
    #maximumCpuCount: false # boolean. Build in Parallel. Default: false.
    #restoreNugetPackages: false # boolean. Restore NuGet Packages. Default: false.
    #logProjectEvents: false # boolean. Record Project Details. Default: false.
    #createLogFile: false # boolean. Create Log File. Default: false.
    #logFileVerbosity: 'normal' # 'quiet' | 'minimal' | 'normal' | 'detailed' | 'diagnostic'. Optional. Use when createLogFile = true. Log File Verbosity. Default: normal.
# MSBuild v1
# Build with MSBuild.
- task: MSBuild@1
  inputs:
    solution: '**/*.sln' # string. Required. Project. Default: **/*.sln.
    #msbuildLocationMethod: 'version' # 'version' | 'location'. MSBuild. Default: version.
    #msbuildVersion: 'latest' # 'latest' | '16.0' | '15.0' | '14.0' | '12.0' | '4.0'. Optional. Use when msbuildLocationMethod = version. MSBuild Version. Default: latest.
    #msbuildArchitecture: 'x86' # 'x86' | 'x64'. Optional. Use when msbuildLocationMethod = version. MSBuild Architecture. Default: x86.
    #msbuildLocation: # string. Optional. Use when msbuildLocationMethod = location. Path to MSBuild. 
    #platform: # string. Platform. 
    #configuration: # string. Configuration. 
    #msbuildArguments: # string. MSBuild Arguments. 
    #clean: false # boolean. Clean. Default: false.
  # Advanced
    #maximumCpuCount: false # boolean. Build in Parallel. Default: false.
    #restoreNugetPackages: false # boolean. Restore NuGet Packages. Default: false.
    #logProjectEvents: false # boolean. Record Project Details. Default: false.
    #createLogFile: false # boolean. Create Log File. Default: false.
    #logFileVerbosity: 'normal' # 'quiet' | 'minimal' | 'normal' | 'detailed' | 'diagnostic'. Optional. Use when createLogFile = true. Log File Verbosity. Default: normal.

輸入

solution - 專案
string。 必須的。 預設值:**/*.sln

如果您想要建置多個專案,請指定搜尋準則。 您可以使用單一資料夾通配符 • 和遞歸通配符 (**)。 例如,**.*proj 搜尋所有子目錄中的所有 MSBuild 專案 (.*proj) 檔案。

請確定您指定的專案已由此組建管線下載。 在 [存放庫] 索引標籤上:

  • 如果您使用 TFVC,請確定專案是 [存放庫] 索引卷標上其中一個對應的子系。
  • 如果您使用 Git,請確定專案或項目位於您要建置的分支中 Git 存放庫中。

小提示

如果您要建置解決方案,建議您使用 Visual Studio 建置工作 而不是 MSBuild 工作。

有關 MSBuild 和 Visual Studio 版本之間差異的資訊,請參閱 Visual Studio 版本與 MSBuild.exe 版本


msbuildLocationMethod - MSBuild
string。 允許的值:versionlocation(指定位置)。 預設值:version


msbuildVersion - MSBuild 版本
string。 選擇性。 msbuildLocationMethod = version時使用 。 允許的值:latest17.0 (MSBuild 17.0)、16.0 (MSBuild 16.0)、15.0 (MSBuild 15.0)、14.0 (MSBuild 14.0)、12.0 (MSBuild 12.0)、4.0 (MSBuild 4.0)。 預設值:latest

如果找不到慣用的版本,則會改用找到的最新版本。 在macOS代理程式上,如果版本低於 xbuild,則會使用 15.0 (Mono)。


msbuildVersion - MSBuild 版本
string。 選擇性。 msbuildLocationMethod = version時使用 。 允許的值:latest16.0 (MSBuild 16.0)、15.0 (MSBuild 15.0)、14.0 (MSBuild 14.0)、12.0 (MSBuild 12.0)、4.0 (MSBuild 4.0)。 預設值:latest

如果找不到慣用的版本,則會改用找到的最新版本。 在macOS代理程式上,如果版本低於 xbuild,則會使用 15.0 (Mono)。


msbuildArchitecture - MSBuild 架構
string。 選擇性。 msbuildLocationMethod = version時使用 。 允許的值:x86 (MSBuild x86)、x64 (MSBuild x64)。 預設值:x86

提供 MSBuild 架構 (x86, x64) 來執行。


MSBuildmsbuildLocation - 路徑
string。 選擇性。 msbuildLocationMethod = location時使用 。

提供 MSBuild 的路徑。


platform - 平臺
string

小提示

  • 如果您要以 MSBuild 專案 (.*proj) 檔案為目標,而不是解決方案,請指定 AnyCPU (沒有空格符)。
  • 在 [變數] 索引標籤上宣告組建變數,例如 [變數] 索引標籤上的 [BuildPlatform],並在 [佇列時間選取 Allow],並將它參考為 $(BuildPlatform)。 如此一來,您就可以在將組建排入佇列並啟用建置多個組態時修改平臺。

configuration - 組態
string

小提示

在 [變數] 索引標籤上宣告組建變數,例如 [變數] 索引標籤上的 [BuildConfiguration],並在 [佇列時間選取 Allow],並將它參考為 $(BuildConfiguration)。 如此一來,您就可以在將組建排入佇列並啟用建置多個組態時修改平臺。


msbuildArguments - MSBuild 自變數
string

指定傳遞至 MSBuild (在 Windows 上) 和 xbuild (在 macOS 上) 的其他自變數。


clean - 乾淨
boolean。 預設值:false

如果您想要將此設為累加組建,請將 設定為 False。 此設定可能會減少建置時間,特別是如果您的程式代碼基底很大時。 除非您也將 Clean 存放庫設定為 False,否則此選項沒有實際的效果。 如果您想要重建程式碼專案中的所有程式碼,請將 設定為 True。 這相當於 MSBuild /target:clean 自變數。 如需詳細資訊,請參閱 存放庫選項


maximumCpuCount - 平行建置
boolean。 預設值:false

如果您的 MSBuild 目標組態與平行建置相容,您可以檢查此輸入,將 /m 參數傳遞至 MSBuild(僅限 Windows)。 如果您的目標組態與平行建置不相容,請檢查此選項可能會導致您的組建產生 file-in-use 錯誤,或間歇性或不一致的建置失敗。


restoreNugetPackages - 還原 NuGet 套件
boolean。 預設值:false

此選項已被取代。 若要還原 NuGet 套件,請在建置之前新增 NuGet 工作。


logProjectEvents - 記錄專案詳細數據
boolean。 預設值:false

選擇性地記錄每個項目的時程表詳細數據(僅限 Windows)。


createLogFile - 建立記錄檔
boolean。 預設值:false

選擇性地建立記錄檔(僅限 Windows)。


logFileVerbosity - 記錄檔詳細資訊
string。 選擇性。 createLogFile = true時使用 。 允許的值:quietminimalnormaldetaileddiagnostic。 預設值:normal

指定記錄檔詳細資訊。


工作控制選項

除了工作輸入之外,所有工作都有控制選項。 如需詳細資訊,請參閱 控制項選項和一般工作屬性

輸出變數

沒有。

備註

我應該使用 Visual Studio 建置工作或 MSBuild 工作嗎?

如果您要建置解決方案,在大部分情況下,您應該使用 Visual Studio 建置工作。 此工作會自動:

  • 為您設定 /p:VisualStudioVersion 屬性。 這會強制 MSBuild 使用一組特定的目標,以增加成功建置的可能性。
  • 指定 MSBuild 版本自變數。

在某些情況下,您可能需要使用 MSBuild 工作。 例如,如果您要建置除了方案以外的程式碼專案,您應該使用它。

我可以在哪裡深入瞭解 MSBuild?

MSBuild 參考

MSBuild 命令行參考

如何為多個平臺建置多個組態?

  1. 在 [變數] 索引標籤上,確定您已為組態和平台定義變數。 若要指定多個值,請以逗號分隔這些值。 例如:

    • 針對 .NET 應用程式,您可以使用偵錯和發行值來指定 BuildConfiguration,而且您可以使用任何 CPU 值來指定 BuildPlatform
    • 針對C++應用程式,您可以使用偵錯和發行值來指定 BuildConfiguration,而且您可以使用任何 x86 和 x64 值來指定 BuildPlatform
  2. 在 [選項] 索引標籤上,選取 [MultiConfiguration],然後指定以逗號分隔的 Multipliers。 例如 BuildConfiguration, BuildPlatform:如果您想要將作業(每個值的組合各一個)散發給多個代理程式,則選取 [選取 Parallel]。

  3. 在 [建置] 索引標籤上,選取此步驟並指定 PlatformConfiguration 自變數。 例如:

    • 平臺: $(BuildPlatform)
    • 組態:$(BuildConfiguration)

我可以建置 TFSBuild.proj 檔案嗎?

您無法建置 TFSBuild.proj 檔案。 這些類型的檔案是由 TFS 2005TFS 2008產生。 這些檔案包含工作,且目標僅支援使用 XAML 組建

故障排除

本節提供使用者在使用 MSBuild 工作時可能會遇到的常見問題的疑難解答秘訣。

建置失敗,發生下列錯誤:執行 MSBuild 時發生內部失敗

可能的原因
  • 變更 MSBuild 版本。
  • 第三方擴充功能的問題。
  • Visual Studio 的新更新,可能會導致組建代理程式上的元件遺失。
  • 已移動或刪除某些必要的 NuGet 套件。
疑難排解建議
使用診斷執行管線以擷取詳細記錄

診斷問題的其中一個可用選項是查看產生的記錄。 您可以在管線執行摘要中選取適當的工作和作業,以檢視管線記錄。

若要取得管線執行的記錄,取得記錄以診斷問題

您也可以設定並下載自訂的詳細資訊記錄檔,以協助您進行疑難解答:

除了管線診斷記錄之外,您也可以檢查這些其他類型的記錄,其中包含更多資訊,以協助您偵錯並解決問題:

嘗試在本機重現錯誤

如果您使用裝載的組建代理程式,您可能會想要嘗試在本機重現錯誤。 這可協助您縮小失敗是建置代理程式或建置工作的結果。

使用相同的自變數,在本機計算機上執行相同的 MSBuild 命令。 如需參考,請參閱 MSBuild 命令

小提示

如果您可以在本機計算機上重現問題,則下一個步驟是調查 MSBuild 問題。

深入瞭解 Microsoft裝載的代理程式。

若要設定您自己的自我裝載代理程式,並執行建置作業:

我還能做什麼?

某些 MSBuild 錯誤是由 Visual Studio 中的變更所造成,因此您可以搜尋 Visual Studio 開發人員社群,以查看此問題是否已回報。 我們也歡迎您的問題、建議和意見反應。

需求

要求 說明
管線類型 YAML,傳統組建
執行於 Agent、DeploymentGroup
需求 自我裝載代理程序必須具有 功能, 符合下列 需求, 執行使用此工作的工作: msbuild
功能 此工作不符合作業中後續工作的任何需求。
命令限制 任意
Settable 變數 任意
代理程式版本 1.95.0 或更新
工作類別 建造

另請參閱