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
. 允許的值: 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代理程式上,如果版本低於15.0
, xbuild
則會使用 (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代理程式上,如果版本低於15.0
, xbuild
則會使用 (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
錯誤,或間歇性或不一致的組建失敗。
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 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 或更新版本 |
工作類別 | 建置 |