使用此工作以 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
。 允許的值:version
、location
(指定位置)。 預設值:version
。
msbuildVersion
-
MSBuild 版本
string
。 選擇性。
msbuildLocationMethod = version
時使用 。 允許的值:latest
、17.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
時使用 。 允許的值:latest
、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)。
msbuildArchitecture
-
MSBuild 架構
string
。 選擇性。
msbuildLocationMethod = version
時使用 。 允許的值:x86
(MSBuild x86)、x64
(MSBuild x64)。 預設值:x86
。
提供 MSBuild 架構 (x86, x64) 來執行。
MSBuild的 msbuildLocation
- 路徑
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
錯誤,或間歇性或不一致的建置失敗。
logProjectEvents
-
記錄專案詳細數據
boolean
。 預設值:false
。
選擇性地記錄每個項目的時程表詳細數據(僅限 Windows)。
createLogFile
-
建立記錄檔
boolean
。 預設值:false
。
選擇性地建立記錄檔(僅限 Windows)。
logFileVerbosity
-
記錄檔詳細資訊
string
。 選擇性。
createLogFile = true
時使用 。 允許的值:quiet
、minimal
、normal
、detailed
、diagnostic
。 預設值:normal
。
指定記錄檔詳細資訊。
工作控制選項
除了工作輸入之外,所有工作都有控制選項。 如需詳細資訊,請參閱 控制項選項和一般工作屬性。
輸出變數
沒有。
備註
我應該使用 Visual Studio 建置工作或 MSBuild 工作嗎?
如果您要建置解決方案,在大部分情況下,您應該使用 Visual Studio 建置工作。 此工作會自動:
- 為您設定
/p:VisualStudioVersion
屬性。 這會強制 MSBuild 使用一組特定的目標,以增加成功建置的可能性。 - 指定 MSBuild 版本自變數。
在某些情況下,您可能需要使用 MSBuild
工作。 例如,如果您要建置除了方案以外的程式碼專案,您應該使用它。
我可以在哪裡深入瞭解 MSBuild?
如何為多個平臺建置多個組態?
在 [變數] 索引標籤上,確定您已為組態和平台定義變數。 若要指定多個值,請以逗號分隔這些值。 例如:
- 針對 .NET 應用程式,您可以使用偵錯和發行值來指定
BuildConfiguration
,而且您可以使用任何 CPU 值來指定BuildPlatform
。 - 針對C++應用程式,您可以使用偵錯和發行值來指定
BuildConfiguration
,而且您可以使用任何 x86 和 x64 值來指定BuildPlatform
。
- 針對 .NET 應用程式,您可以使用偵錯和發行值來指定
在 [選項] 索引標籤上,選取 [
MultiConfiguration
],然後指定以逗號分隔的Multipliers
。 例如BuildConfiguration, BuildPlatform
:如果您想要將作業(每個值的組合各一個)散發給多個代理程式,則選取 [選取Parallel
]。在 [建置] 索引標籤上,選取此步驟並指定
Platform
和Configuration
自變數。 例如:- 平臺:
$(BuildPlatform)
- 組態:
$(BuildConfiguration)
- 平臺:
我可以建置 TFSBuild.proj 檔案嗎?
您無法建置 TFSBuild.proj
檔案。 這些類型的檔案是由 TFS 2005
和 TFS 2008
產生。 這些檔案包含工作,且目標僅支援使用 XAML 組建。
故障排除
本節提供使用者在使用 MSBuild
工作時可能會遇到的常見問題的疑難解答秘訣。
- 建置失敗,發生下列錯誤:執行 MSBuild 時發生內部失敗
建置失敗,發生下列錯誤:執行 MSBuild 時發生內部失敗
可能的原因
- 變更 MSBuild 版本。
- 第三方擴充功能的問題。
- Visual Studio 的新更新,可能會導致組建代理程式上的元件遺失。
- 已移動或刪除某些必要的 NuGet 套件。
疑難排解建議
使用診斷執行管線以擷取詳細記錄
診斷問題的其中一個可用選項是查看產生的記錄。 您可以在管線執行摘要中選取適當的工作和作業,以檢視管線記錄。
若要取得管線執行的記錄,取得記錄以診斷問題
您也可以設定並下載自訂的詳細資訊記錄檔,以協助您進行疑難解答:
除了管線診斷記錄之外,您也可以檢查這些其他類型的記錄,其中包含更多資訊,以協助您偵錯並解決問題:
嘗試在本機重現錯誤
如果您使用裝載的組建代理程式,您可能會想要嘗試在本機重現錯誤。 這可協助您縮小失敗是建置代理程式或建置工作的結果。
使用相同的自變數,在本機計算機上執行相同的 MSBuild
命令。 如需參考,請參閱 MSBuild 命令 。
若要設定您自己的自我裝載代理程式,並執行建置作業:
- 自我裝載 Windows 代理程式
- 自我裝載 Linux 代理程式 (部分機器翻譯)
- 自我裝載 macOS 代理程式 (部分機器翻譯)
我還能做什麼?
某些 MSBuild 錯誤是由 Visual Studio 中的變更所造成,因此您可以搜尋 Visual Studio 開發人員社群,以查看此問題是否已回報。 我們也歡迎您的問題、建議和意見反應。
需求
要求 | 說明 |
---|---|
管線類型 | YAML,傳統組建 |
執行於 | Agent、DeploymentGroup |
需求 | 自我裝載代理程序必須具有 功能, 符合下列 需求, 執行使用此工作的工作: msbuild |
功能 | 此工作不符合作業中後續工作的任何需求。 |
命令限制 | 任意 |
Settable 變數 | 任意 |
代理程式版本 | 1.95.0 或更新 |
工作類別 | 建造 |