MSBuild@1 - MSBuild v1 工作

使用此工作搭配 MSBuild 進行建置。

Syntax

# 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.
# 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.

輸入

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

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

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

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

提示

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


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代理程式上,如果版本低於15.0xbuild 則會使用 (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代理程式上,如果版本低於15.0xbuild 則會使用 (Mono) 。


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

提供要執行的 MSBuild 架構 (x86、x64) 。


msbuildLocation - MSBuild 的路徑
string. 選擇性。 使用時機 msbuildLocationMethod = location

提供 MSBuild 的路徑。


platform - 平臺
string.

提示

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

configuration - 配置
string.

提示

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


msbuildArguments - MSBuild 自變數
string.

指定在 windows) 上傳遞至 MSBuild (的其他自變數,以及 macOS) 上的 xbuild (。


clean - 清潔
boolean. 預設值:false

False如果您要將此設為累加組建,請將 設定為 。 此設定可能會減少建置時間,特別是如果您的程式代碼基底很大時。 除非您也將存放庫設定為 False,否則Clean此選項沒有實際作用。 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。 允許的值:quiet、、、minimalnormaldetaileddiagnostic 預設值: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, BuildPlatformParallel 如果您要將作業 (一個,以平行方式將值) 給多個代理程式的組合,請選取 。

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

    • 平臺: $(BuildPlatform)
    • 設定: $(BuildConfiguration)

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

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

疑難排解

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

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

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

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

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

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

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

嘗試在本機重現錯誤

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

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

提示

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

深入瞭解 Microsoft 託管的代理程式

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

我還可以做什麼?

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

規格需求

需求 描述
管線類型 YAML、傳統組建
在上執行 Agent、DeploymentGroup
要求 自我裝載代理程式必須具備符合下列需求的功能,才能執行使用此工作的作業:msbuild
Capabilities 此工作不符合作業中後續工作的任何需求。
命令限制 任何
可設定變數 任何
代理程式版本 1.95.0 或更新版本
工作類別 建置

另請參閱