Microsoft 裝載的代理程式 \(英文\)
Azure DevOps Services
Microsoft 裝載的代理程式僅適用于裝載于雲端的 Azure DevOps Services。 您無法搭配內部部署 TFS 或 Azure DevOps Server 使用 Microsoft 裝載的代理程式或 Azure Pipelines 代理程式組件區。 使用這些內部部署版本,您必須使用 自我裝載的 代理程式。
重要
選取對應至您平臺和版本的本文版本。 版本選取器位於目錄上方。 查閱您的 Azure DevOps 平臺和版本 。
如果您的管線位於 Azure Pipelines 中,您可以使用 Microsoft 裝載的代理程式 ,輕鬆地執行作業 。 使用 Microsoft 託管的代理程式,就不需要自己維護和升級。 您一律會取得管線中指定的最新 VM 映射版本。 每次執行管線時,您都會為管線中的每個作業取得全新的虛擬機器。 虛擬機器會在一個作業之後捨棄 (這表示作業對虛擬機器檔案系統所做的任何變更,例如簽出程式碼,將無法用於下一個作業)。 Microsoft 裝載的代理程式可以直接在 VM 或 容器 上執行作業 。
Azure Pipelines 會使用 Microsoft 裝載的代理程式,提供名為 Azure Pipelines 的預先定義代理程式組件區。
對於許多小組來說,這是執行作業的最簡單方式。 您可以先試用,看看這是否適用於您的組建或部署。 如果沒有,您可以使用 擴展集代理程式 或自我裝載代理程式。
提示
您可以免費試用 Microsoft 裝載的代理程式。
軟體
Azure Pipelines 代理程式組件區提供數個虛擬機器映射可供選擇,每個映射都包含各種工具和軟體。
映像 | 傳統編輯器代理程式規格 | YAML VM 映射標籤 | 包含的軟體 |
---|---|---|---|
Windows Server 2022 與 Visual Studio 2022 | windows-2022 | windows-latest 或 windows-2022 |
連結 |
Windows Server 2019 搭配 Visual Studio 2019 | windows-2019 | windows-2019 |
連結 |
Ubuntu 22.04 | ubuntu-22.04 | ubuntu-latest 或 ubuntu-22.04 |
連結 |
Ubuntu 20.04 | ubuntu-20.04 | ubuntu-20.04 |
連結 |
macOS 13 Ventura | macOS-13 | macOS-13 |
連結 |
macOS 12 蒙特利 | macOS-12 | macOS-latest 或 macOS-12 |
連結 |
macOS 11 Big Sur | macOS-11 | macOS-11 |
連結 |
傳統組建管線的預設代理程式映射為 windows-2019 ,而 YAML 組建管線的預設代理程式映射為 ubuntu-latest
。 如需詳細資訊,請參閱 在管線 中指定集區。
您可以選擇資料表中的 [包含的軟體] 連結,以查看每個託管代理程式的 已安裝軟體 。 使用 macOS 映射時,您可以從工具版本手動選取。 閱讀更多內容。
最近的更新
- macOS 13 映射可供使用
- macOS 10.15 映射在 2023 年 4 月 24 日完全不受支援
- Ubuntu 18.04 已淘汰
ubuntu-latest
影像使用ubuntu-22.04
。- Azure Pipelines 託管 集區的 Ubuntu 22.04 正式推出。
- Ubuntu 18.04 映射將于 8/8/22 開始淘汰,且 2023 /4/1 完全不受支援。
- macOS 10.15 映射將于 5/31/22 開始淘汰,且 2022 /1/1 完全不受支援。
windows-latest
影像使用windows-2022
。macOS-latest
影像使用macOS-11
。- Ubuntu 16.04 裝載的映射已移除 2021 年 9 月。
- Windows Server 2016 含 Visual Studio 2017 映射已被取代,將于 2022 年 6 月 30 日淘汰。 請閱讀 此部落格文章 ,瞭解如何使用已被取代的映射來識別管線。
- 在 2021 年 12 月,我們已移除下列 Azure Pipelines 裝載的映射:
- macOS X Mojave 10.14 (
macOS-10.14
)
- macOS X Mojave 10.14 (
- 在 2020 年 3 月,我們已移除下列 Azure Pipelines 裝載的映射:
- Windows Server 2012R2 與 Visual Studio 2015 (
vs2015-win2012r2
) - macOS X High Sierra 10.13 (
macOS-10.13
) - Windows Server Core 1803 (
win1803
)
- Windows Server 2012R2 與 Visual Studio 2015 (
建議客戶移轉至較新版本或 自我裝載的代理程式 。
如需有關如何更新使用這些映射之管線的詳細資訊和指示,請參閱 移除 Azure Pipelines 託管 集區中的舊映射。
注意
Azure Pipelines 裝載的集區會取代先前裝載的集區,這些集區的名稱對應至對應的映射。 您在先前裝載集區中擁有的任何作業都會自動重新導向至新 Azure Pipelines 裝載集區中的正確映射。 在某些情況下,您仍可能會看到舊的集區名稱,但裝載作業會在幕後使用 Azure Pipelines 集區執行。 如需此更新的詳細資訊,請參閱 2019 年 7 月 1 日 - Sprint 154 版本資訊中的單一裝載集 區版本資訊 。
重要
若要要求在 Microsoft 裝載的代理程式上安裝其他軟體,請勿在此檔上建立意見反應要求,或開啟支援票證。 相反地,請在存放 庫 上開啟問題,在此我們管理腳本以產生各種映射。
如何使用已被取代的託管映射來識別管線
若要識別使用已取代映射的管線,請流覽至您組織中的下列位置: https://dev.azure.com/{organization}/{project}/_settings/agentqueues
,並篩選要檢查的映射名稱。 下列範例會 vs2017-win2016
檢查影像。
您也可以使用此處 的腳本 來查詢已取代之專案映射的作業歷程記錄,如下列範例所示。
./QueryJobHistoryForRetiredImages.ps1 -accountUrl https://dev.azure.com/{org} -pat {pat}
使用 Microsoft 裝載的代理程式
在 YAML 管線中,如果您未指定集區,管線預設為 Azure Pipelines 代理程式組件區。 您只需要指定要使用的虛擬機器映射。
jobs:
- job: Linux
pool:
vmImage: 'ubuntu-latest'
steps:
- script: echo hello from Linux
- job: macOS
pool:
vmImage: 'macOS-latest'
steps:
- script: echo hello from macOS
- job: Windows
pool:
vmImage: 'windows-latest'
steps:
- script: echo hello from Windows
注意
集區的規格可以在 YAML 檔案中的多個層級完成。 如果您注意到管線未在預期的映射上執行,請確定您在管線、階段和作業層級驗證集區規格。
避免硬式編碼參考
當您使用 Microsoft 裝載的代理程式時,請一律使用 變數 來參考組建環境和代理程式資源。 例如,不要硬式編碼包含存放庫的磁碟機號或資料夾。 託管代理程式的精確版面配置可能會變更,而不會發出警告。
硬體
執行 Windows 和 Linux 映射的 Microsoft 裝載代理程式會布建在具有 2 核心 CPU、7 GB RAM 和 14 GB SSD 磁碟空間的 Azure 一般用途虛擬機器上。 這些虛擬機器會與 Azure DevOps 組織位於相同的地理位置。
執行 macOS 映射的代理程式會布建在具有 3 核心 CPU、14 GB RAM 和 14 GB SSD 磁碟空間的 Mac 專業人員上。 無論 Azure DevOps 組織的位置為何,這些代理程式一律在美國執行。 如果資料主權對您很重要,而且如果您的組織不在美國,則您不應該使用 macOS 映射。 深入了解。
所有這些機器至少有 10 GB 的可用磁碟空間可供管線執行。 當您的管線取出原始程式碼、下載套件、提取 Docker 映射或產生中繼檔案時,會耗用此可用空間。
重要
我們無法接受增加 Microsoft 裝載代理程式磁碟空間的要求,或布建更強大的機器。 如果 Microsoft 裝載的代理程式規格不符合您的需求,則您應該考慮 自我裝載代理程式 或 擴展集代理程式 。
網路
在某些設定中,您可能需要知道代理程式部署所在的 IP 位址範圍。 例如,如果您需要透過防火牆授與託管代理程式存取權,您可能想要依 IP 位址限制該存取權。 因為 Azure DevOps 使用 Azure 全域網路,因此 IP 範圍會隨著時間而有所不同。 Microsoft 會 每週發佈 JSON 檔案 ,列出 Azure 資料中心的 IP 範圍,依區域細分。 此檔案會每週更新一次,並包含新的計畫 IP 範圍。 只有最新版本的檔案可供下載。 如果您需要舊版,您必須每週下載並封存它們,因為它們可供使用。 新的 IP 範圍會在下周生效。 我們建議您經常檢查一次(每週至少一次),以確保您保持最新的清單。 如果代理程式作業開始失敗,第一個疑難排解步驟是確定您的設定符合最新的 IP 位址清單。 託管代理程式的 IP 位址範圍會列在美國西部區域的每週檔案底下 AzureCloud.<region>
AzureCloud.westus
。
您的託管代理程式會在與組織相同的 Azure 地理位置 中執行。 每個地理位置都包含一或多個區域。 雖然您的代理程式可能會在與組織相同的區域中執行,但並不保證會執行此動作。 若要取得代理程式可能 IP 範圍的完整清單,您必須使用您地理位置中包含的所有區域的 IP 範圍。 例如,如果您的組織位於 美國 地理位置,則必須使用該地理位置中所有區域的 IP 範圍。
若要判斷地理位置,請流覽至 https://dev.azure.com/<your_organization>/_settings/organizationOverview
,取得您的區域,並從 Azure geography 資料表尋找相關聯的地理位置 。 識別地理位置之後,請針對該地理位置中的所有區域,使用每週檔案 中的 IP 範圍 。
重要
您無法使用 ExpressRoute 或 VPN 之類的 私人連線,將 Microsoft 裝載的代理程式連線到您的公司網路。 Microsoft 裝載的代理程式與伺服器之間的流量將會透過公用網路。
識別 Microsoft 裝載代理程式的可能 IP 範圍
- 在 [組織設定 ] 中 識別 您組織的 區域。
- 識別您組織區域的 Azure 地理位置 。
- 將地理位置中區域的名稱對應至每週檔案中使用的格式
AzureCloud.<region>
,格式如下。AzureCloud.westus
您可以從適用于 .NET 的 Azure 管理程式庫,檢閱傳遞至 Region 類別 原始程式碼中 定義之區域建構函式的區功能變數名稱稱,將區功能變數名稱稱從 Azure Geography 清單對應至每週檔案中使用的格式。注意
由於 Azure 管理程式庫 for .NET 中 沒有 API 可列出地理位置的區域,因此您必須手動列出它們,如下列範例所示。
- 從 每週檔案 擷取地理位置中所有區域的 IP 位址。 如果您的區域是 巴西南部 或 西歐 ,您必須根據後援地理位置包含其他 IP 範圍,如下列注意事項所述。
注意
由於容量限制,巴西南部 或 西歐 地區的某些組織 偶爾可能會看到其託管的代理程式位於其預期的地理位置之外。 在這些情況下,除了包含地理位置中所有區域的 IP 範圍,如上一節所述,容量後援地理位置中的區域必須包含其他 IP 範圍。
如果您的組織位於 巴西南部 區域,您的容量後援地理位置會 美國 。
如果您的組織位於 西歐 區域,則容量後援地理位置為 法國 。
我們的 Mac IP 範圍不會包含在上述 Azure IP 中,因為它們裝載于 GitHub 的 macOS 雲端中。 您可以使用此處 提供的 指示, 使用 GitHub 中繼資料 API 來擷取 IP 範圍。
範例
在下列範例中,會從每週檔案擷取美國西部區域中組織的託管代理程式 IP 位址範圍。 由於美國西部區域位於美國地理位置中,因此會包含美國地理位置中所有區域的 IP 位址。 在此範例中,IP 位址會寫入主控台。
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace WeeklyFileIPRanges
{
class Program
{
// Path to the locally saved weekly file
const string weeklyFilePath = @"C:\MyPath\ServiceTags_Public_20230904.json";
static void Main(string[] args)
{
// United States geography has the following regions:
// Central US, East US, East US 2, East US 3, North Central US,
// South Central US, West Central US, West US, West US 2, West US 3
// This list is accurate as of 9/8/2023
List<string> USGeographyRegions = new List<string>
{
"centralus",
"eastus",
"eastus2",
"eastus3",
"northcentralus",
"southcentralus",
"westcentralus",
"westus",
"westus2",
"westus3"
};
// Load the weekly file
JObject weeklyFile = JObject.Parse(File.ReadAllText(weeklyFilePath));
JArray values = (JArray)weeklyFile["values"];
foreach (string region in USGeographyRegions)
{
string tag = $"AzureCloud.{region}";
Console.WriteLine(tag);
var ipList =
from v in values
where tag.Equals((string)v["name"], StringComparison.OrdinalIgnoreCase)
select v["properties"]["addressPrefixes"];
foreach (var ip in ipList.Children())
{
Console.WriteLine(ip);
}
}
}
}
}
服務標籤
服務標籤無法列出 Microsoft 裝載的代理程式。 如果您嘗試將裝載的代理程式存取權授與資源,則必須遵循 IP 範圍允許清單方法。
安全性
Microsoft 裝載的代理程式會在安全的 Azure 平臺上執行。 不過,您必須注意下列安全性考慮。
- 雖然 Microsoft 裝載的代理程式會在 Azure 公用網路上執行,但不會指派公用 IP 位址。 因此,外部實體無法以 Microsoft 裝載的代理程式為目標。
- Microsoft 裝載的代理程式會在個別 VM 中執行,這些 VM 會在每次執行之後重新建立映射。 每個代理程式都專用於單一組織,而每個 VM 只會裝載單一代理程式。
- 從安全性的觀點來看,在 Microsoft 裝載的代理程式上執行管線有幾個優點。 如果您在管線中執行不受信任的程式碼,例如分叉的貢獻,在 Microsoft 裝載的代理程式上執行管線比在公司網路中自我裝載的代理程式更安全。
- 當管線需要存取防火牆後方的公司資源時,您必須允許 Azure 地理位置的 IP 位址範圍。 這可能會增加您的曝光率,因為 IP 位址的範圍相當大,而且因為此範圍中的機器也可以屬於其他客戶。 若要避免這種情況,最好的方法是避免需要存取內部資源。 如需將成品部署至一組伺服器的資訊,請參閱 通訊以部署至目標伺服器 。
- 裝載的映射不符合 CIS 強化基準 。 若要使用 CIS 強化的映射,您必須建立自我裝載代理程式或擴展集代理程式。
功能和限制
Microsoft 裝載的代理程式:
- 具有 上述軟體 。 您也可以使用 工具安裝程式工作 在組建或發行期間新增軟體。
- 您會為管線中的每個作業取得全新的映射代理程式。
- 為您的來源和建置輸出提供 10 GB 的儲存體。
- 提供免費層:
- 公用專案:每個月最多可以執行 360 分鐘(6 小時)的免費 Microsoft 裝載平行作業,且每個月沒有整體時間限制。 請與我們連 絡,以增加您的免費層限制。
- 私人專案:每個月最多可以執行 60 分鐘的免費平行作業,直到您每月使用 1,800 分鐘(30 小時)。 您可以為每個平行作業支付額外的容量。 付費平行作業會移除每月時間限制,並可讓您執行每個作業最多 360 分鐘(6 小時)。 購買 Microsoft 裝載的平行作業 。
- 當您建立新的 Azure DevOps 組織時,預設不會獲得這些免費授與。 若要要求公用或私人專案的免費授與,請提交 要求 。
- 在 Microsoft Azure 一般用途虛擬機器 上執行Standard_DS2_v2 。
- 在 Windows 上以系統管理員身分執行,並在 Linux 上以無密碼 sudo 使用者身分執行。
- (僅限 Linux)執行 中
cgroup
提供 6 GB 實體記憶體和 13 GB 總記憶體的 中的步驟。 - 使用定期更新的 VM 映射(每 3 周)。
Microsoft 裝載的代理程式不提供:
- 遠端連線的能力。
- 將 成品卸載至 UNC 檔案共用 的能力。
- 能夠將機器直接加入公司網路。
- 取得更大或更強大的組建機器的能力。
- 預先載入自訂軟體的能力。 您可以在管線執行期間安裝軟體,例如透過 工具安裝程式工作 或在腳本中安裝軟體。
- 您可以使用可能更快啟動和執行組建的自我裝載代理程式,取得的潛在效能優勢。 深入了解
- 執行 XAML 組建 的能力。
- 復原至先前 VM 映射版本的能力。 您一律會使用最新版本。
如果 Microsoft 裝載的代理程式不符合您的需求,您可以部署自己的 自我裝載代理程式 或使用 擴展集代理程式 。
常見問題集
如何查看映射中包含的軟體?
您可以選擇 [軟體] 資料表中的 [包含的軟體] 連結,以查看每個託管代理程式的 已安裝軟體 。
注意
根據預設,Windows 代理程式會使用隨附于代理程式軟體的 Git 版本。 Microsoft 建議使用隨附于代理程式的 Git 版本,但您有數個選項可覆寫此預設行為,並使用代理程式電腦已安裝在路徑中的 Git 版本。
- 在管線中將名為
System.PreferGitFromPath
的管線變數設定為true
。 - 在自我裝載代理程式上,您可以在代理程式根目錄中建立名為 .env 的檔案,並將一
System.PreferGitFromPath=true
行新增至檔案。 如需詳細資訊,請參閱 如何?為每個個別代理程式設定不同的環境變數?
若要查看管線所使用的 Git 版本,您可以查看管線中步驟的記錄 checkout
,如下列範例所示。
Syncing repository: PathFilter (Git)
Prepending Path environment variable with directory containing 'git.exe'.
git version
git version 2.26.2.windows.1
Microsoft 如何選擇要放在映射上的軟體和版本?
如需映射上所含軟體版本的詳細資訊,請參閱 所安裝 專案的指導方針。
映射何時更新?
影像通常會每週更新一次。 您可以檢查 狀態徽章 ,其格式 20200113.x
為第一個部分指出影像更新日期的格式。
如果我需要的軟體已移除或取代為較新版本,該怎麼辦?
您可以選擇 [使用 Microsoft 裝載的代理程式 ] 資料表中的 [包含的軟體 ] 連結,以提出 GitHub 問題 ,讓我們知道。
您也可以使用包含所需軟體確切版本的自我裝載代理程式。 如需詳細資訊,請參閱 自我裝載代理 程式。
如果我需要具有更多處理能力、記憶體或磁碟空間的較大電腦,該怎麼辦?
我們無法增加 Microsoft 裝載代理程式的記憶體、處理能力或磁碟空間,但您可以使用 裝載于機器上的自我裝載代理程式或 擴展集代理 程式 搭配您所需的規格。
我無法選取 Microsoft 裝載的代理程式,而且無法將組建或部署排入佇列。 我該怎麼辦?
Microsoft 裝載的代理程式僅適用于 Azure Pipelines,不適用於 TFS 或 Azure DevOps Server。
根據預設,組織中的所有專案參與者都可以存取 Microsoft 裝載的代理程式。 但是,您的組織系統管理員可能會限制 Microsoft 裝載代理程式的存取權,以選取使用者或專案。 要求 Azure DevOps 組織的擁有者授與您使用 Microsoft 裝載的代理程式的許可權。 請參閱 代理程式組件區安全性 。
在 Microsoft 裝載集區代理程式上執行的管理需要更多時間才能完成。 如何加快速度?
如果您的管線最近速度變慢,請參閱我們的狀態頁面以瞭解中斷。 我們的服務可能有問題。 或者,檢閱您在應用程式程式碼或管線中所做的任何變更。 在簽出期間,您的存放庫大小可能已增加、您可能正在上傳大型成品,或者您可能正在執行更多測試。
如果您僅設定管線並將 Microsfot 裝載代理程式與本機電腦或自我裝載代理程式進行比較,請注意我們用來執行作業的規格。 我們無法為您提供更大或功能更強大的機器。 如果無法接受此效能,您可考慮使用自我裝載式代理程式或擴展集代理程式。
我需要更多的代理人。 我能做什麼?
所有 Azure DevOps 組織都會為開放原始碼專案提供數個免費平行作業,以及每個月一個免費平行作業,以及私人專案的有限分鐘數。 如果您需要開放原始碼專案的額外分鐘數或平行作業,請連絡 支援人員 。 如果您需要私人專案的額外分鐘數或平行作業,您可以 購買更多 專案。
我的管線會在自我裝載代理程式上成功,但在 Microsoft 裝載的代理程式上失敗。 我該怎麼辦?
您的自我裝載代理程式可能已安裝所有正確的相依性,而相同的相依性、工具和軟體不會安裝在 Microsoft 裝載的代理程式上。 首先,請遵循上表中包含的軟體連結 ,仔細檢閱 Microsoft 裝載代理程式上安裝的軟體 清單。 然後,將這與安裝在自我裝載代理程式上的軟體進行比較。 在某些情況下,Microsoft 裝載的代理程式可能會有您需要的工具(例如 Visual Studio),但可能尚未安裝所有必要的選擇性元件。 如果您發現差異,則您有兩個選項:
您可以在存放庫 上 建立新的問題,我們會在其中追蹤其他軟體的要求。 連絡支援人員無法協助您在 Microsoft 裝載的代理程式上設定新軟體。
我的組建會在本機電腦上成功,但在 Microsoft 裝載的代理程式上失敗。 我該怎麼辦?
您的本機電腦可能已安裝所有正確的相依性,而相同的相依性、工具和軟體不會安裝在 Microsoft 裝載的代理程式上。 首先,請遵循上表中包含的軟體連結 ,仔細檢閱 Microsoft 裝載代理程式上安裝的軟體 清單。 然後,將這與安裝在本機電腦上的軟體進行比較。 在某些情況下,Microsoft 裝載的代理程式可能會有您需要的工具(例如 Visual Studio),但可能尚未安裝所有必要的選擇性元件。 如果您發現差異,則您有兩個選項:
您可以在存放庫 上 建立新的問題,我們會在其中追蹤其他軟體的要求。 這是安裝新軟體的最佳選擇。 連絡支援人員將無法協助您在 Microsoft 裝載的代理程式上設定新軟體。
我的管線失敗,並出現錯誤:「裝置上沒有剩餘空間」。
Microsoft 裝載的代理程式僅有 10 GB 的磁碟空間可供執行您的作業。 當您簽出原始程式碼、下載套件、下載 Docker 映射或產生中繼檔案時,會耗用此空間。 不幸的是,我們無法增加 Microsoft 裝載映射上可用的可用空間。 您可以重新建構管線,使其可以納入此空間。 或者,您可以考慮使用 自我裝載代理 程式或 擴展集代理程式 。
我在 Microsoft 裝載的代理程式上執行的管線需要存取公司網路上的伺服器。 如何取得防火牆中允許的 IP 位址清單?
在 Microsoft 裝載的代理程式上執行的管線無法解析公司網路上的伺服器名稱。 如何修正此問題?
如果您依 DNS 名稱參照伺服器,請確定您的伺服器可透過其 DNS 名稱在網際網路上公開存取。 如果您依其 IP 位址參照您的伺服器,請確定 IP 位址可在網際網路上公開存取。 在這兩種情況下,請確定代理程式與公司網路之間的任何防火牆都 允許代理程式 IP 範圍 。
我收到來自Azure 儲存體帳戶的 SAS IP 授權錯誤
如果您收到 SAS 錯誤碼,很可能是因為由於您的Azure 儲存體規則而不允許來自 Microsoft 裝載代理程式的 IP 位址範圍。 有一些因應措施:
- 管理您Azure 儲存體帳戶 的 IP 網路規則,並新增 託管代理程式的 IP 位址範圍。
- 在您的管線中,使用 Azure CLI 在存取儲存體之前,先更新Azure 儲存體帳戶 的網路規則集,然後還原先前的規則集。
- 使用 自我裝載代理 程式或 擴展集代理程式 。
如何在託管 macOS 代理程式上手動選取工具的版本?
Xamarin
裝載的 macOS 代理程式會將 Xamarin SDK 版本和相關聯的 Mono 版本儲存為一組符號連結至單一套件組合符號連結所提供的 Xamarin SDK 位置。
若要手動選取要用於託管 macOS 代理程式的 Xamarin SDK 版本 ,請在您的 Xamarin 建置工作作為組建的一部分之前執行下列 bash 命令,並指定要與 Xamarin 版本套件組合的符號連結。
/bin/bash -c "sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh <symlink>"
您可以在代理程式檔中找到所有可用的 Xamarin SDK 版本和符號連結清單:
此命令不會選取 Xamarin SDK 以外的 Mono 版本。 若要手動選取 Mono 版本,請參閱下列指示。
如果您使用非預設版本的 Xcode 來建置 Xamarin.iOS 或 Xamarin.Mac 應用程式,您應該另外執行此命令列:
/bin/bash -c "echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'$(xcodeRoot);sudo xcode-select --switch $(xcodeRoot)/Contents/Developer"
where $(xcodeRoot)
= /Applications/Xcode_13.2.app
您可以在代理程式和代理程式在這裡 macos-12
macos-11
找到 託管 macOS 代理 程式集區上的 Xcode 版本。
Xcode
如果您使用 Azure Pipelines 和 TFS 隨附的 Xcode 工作 ,您可以在該工作的屬性中選取 Xcode 版本。 否則,若要手動將 Xcode 版本設定為在託管 macOS 代理程式組件區上使用 ,請在 xcodebuild
建置工作之前,視需要執行此命令列,並視需要取代 Xcode 版本號碼 13.2:
/bin/bash -c "sudo xcode-select -s /Applications/Xcode_13.2.app/Contents/Developer"
您可以在代理程式和代理程式在這裡 macos-12
macos-11
找到 託管 macOS 代理 程式集區上的 Xcode 版本。
此命令不適用於 Xamarin 應用程式。 若要手動選取 Xcode 版本來建置 Xamarin 應用程式,請參閱上述指示。
Mono
若要在裝載 macOS 代理程式組件區上 手動選取要使用的 Mono 版本,請在您的 Mono 建置工作之前,在您的組建的每個作業中執行此腳本,並指定具有必要 Mono 版本的符號連結(您可以在上述 Xamarin 區段中 找到 所有可用的符號連結清單):
SYMLINK=<symlink>
MONOPREFIX=/Library/Frameworks/Mono.framework/Versions/$SYMLINK
echo "##vso[task.setvariable variable=DYLD_FALLBACK_LIBRARY_PATH;]$MONOPREFIX/lib:/lib:/usr/lib:$DYLD_LIBRARY_FALLBACK_PATH"
echo "##vso[task.setvariable variable=PKG_CONFIG_PATH;]$MONOPREFIX/lib/pkgconfig:$MONOPREFIX/share/pkgconfig:$PKG_CONFIG_PATH"
echo "##vso[task.setvariable variable=PATH;]$MONOPREFIX/bin:$PATH"