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 提供預先定義的代理程式集區 (名為 Azure Pipelines) 搭配 Microsoft 裝載的代理程式。
對於許多小組來說,這是執行作業的最簡單方式。 您可以先試用,看看這是否適用於您的組建或部署。 如果沒有,您可以使用 擴展集代理程式 或自我裝載代理程式。
提示
您可以免費試用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 24.04 | ubuntu-24.04 | ubuntu-24.04 |
連結 |
Ubuntu 22.04 | ubuntu-22.04 | ubuntu-latest 或 ubuntu-22.04 |
連結 |
Ubuntu 20.04 | ubuntu-20.04 | ubuntu-20.04 |
連結 |
macOS 15 Sequia 預覽 | macOS-15 | macOS-15 |
連結 |
macOS 14 Sonoma | macOS-14 | macOS-latest 或 macOS-14 |
連結 |
macOS 13 Ventura | macOS-13 | macOS-13 |
連結 |
macOS 12 蒙特利 | macOS-12 | macOS-12 |
已取代 |
傳統組建管線的預設代理程式映射為 windows-2019,而 YAML 組建管線的預設代理程式映像為 ubuntu-latest
。 如需詳細資訊,請參閱 在管線中指定集區。
您可以選擇資料表中的 [包含的軟體] 連結,以查看每個託管代理程式的 已安裝軟體 。 使用macOS映射時,您可以從工具版本手動選取。 閱讀更多內容。
最近的更新
- macOS-15 Sequia 映射可在預覽中取得
- Ubuntu-24.04 映像可供使用
- macOS-12 蒙特利映射已被取代,將於 2024 年 12 月 3 日淘汰。
- Ubuntu-22.04 映像可供使用
- macOS-14 Sonoma 影像可在預覽中取得
- macOS-11 Big Sur 映射已被取代,且將於 2024 年 6 月 28 日淘汰。
- 所有Microsoft裝載的代理程序都會從 1 月 28 日開始使用 PowerShell 7.2 LTS 到 PowerShell 7.4 LTS。 如需詳細資訊,包括潛在的重大變更,請參閱 Microsoft裝載的代理程式使用PowerShell 7.4。
- 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 託管集區中的舊映像。
注意
macOS 容量目前有限制。 不同於 Linux 和 Windows 映像,我們的容量會受到 Azure 所有容量的限制,而 macOS 容量則受限於我們可用的硬體數量。 雖然我們正在努力讓 2024 年春季提供額外的容量,但有些作業可能會遇到延遲執行。 如果可能,例如針對不會建立 Apple 生態系統應用程式的工作,客戶應選擇 Linux 或 Windows 映像。
注意
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裝載的代理程式時,請一律使用 變數 來參考組建環境和代理程序資源。 例如,不要硬式編碼包含存放庫的驅動器號或資料夾。 託管代理程式的精確版面配置可能會變更,而不會發出警告。
硬體
在具有雙核心 CPU、7 GB RAM 和 14 GB SSD 磁碟空間的 Azure 通用虛擬機器上,佈建有執行 Windows 和 Linux 映像的 Microsoft 裝載的代理程式。 這些虛擬機器位於 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裝載的代理程式不符合您的需求,您可以部署自己的 自我裝載代理程式、使用 擴展集代理程式或 受控 DevOps 集區代理程式。
常見問題集
如何查看映像中包含的軟體?
您可以選擇 [軟體] 資料表中的 [包含的軟體] 連結,以查看每個託管代理程式的已安裝軟體。
注意
根據預設,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 代理程式上手動選取工具的版本?
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 代理程式集區上的 Xcode 版本。
此命令不適用於 Xamarin 應用程式。 若要手動選取 Xcode 版本來建置 Xamarin 應用程式,請參閱上述指示。
Mono
若要在裝載的 macOS 代理程式集區上手動選取要使用的 Mono 版本,請在您的 Mono 建置工作之前,於組建的每個作業中執行此腳本,並指定具有所需 Mono 版本的符號連結:
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"