Azure DevOps中.NET 6 SDK缓存失效,每次构建重复下载问题排查
解决Azure DevOps流水线重复下载.NET 6 SDK的问题
你的YAML配置缺少了缓存相关的关键配置,导致每次在微软托管代理上运行流水线时都会重新下载.NET 6 SDK。原因是微软托管代理为临时虚拟机,每次运行流水线都会使用全新实例,默认不会保留之前下载的SDK,需要手动配置缓存任务复用已下载的文件。
修正后的YAML配置
# 先配置缓存任务,缓存.NET SDK目录 - task: Cache@2 displayName: 'Cache .NET SDK' inputs: key: 'dotnet | "$(Agent.OS)" | 6.0.x' restoreKeys: | dotnet | "$(Agent.OS)" dotnet path: $(Agent.ToolsDirectory)/dotnet # 再执行UseDotNet任务 - task: UseDotNet@2 displayName: 'Get .net core 6' inputs: packageType: 'sdk' version: '6.0.x' installationPath: $(Agent.ToolsDirectory)/dotnet
配置说明
- Cache@2任务:通过
key标识缓存唯一性,结合操作系统和.NET版本号,避免不同平台、不同版本的SDK缓存冲突。restoreKeys用于精确匹配失败时,尝试匹配更宽泛的缓存项(比如同操作系统的任意.NET版本缓存)。 - UseDotNet@2任务:保持原有配置即可,缓存恢复成功后,任务会直接使用缓存中的SDK,跳过下载步骤。
另外,你也可以先确认微软托管代理的预装软件列表,若所需的.NET 6 SDK版本已预装,可直接省略安装步骤,或调整version参数匹配预装版本,避免不必要的下载。
内容的提问来源于stack exchange,提问作者ilwj
相关产品推荐
相关产品推荐

