升级到.NET 6.0后Azure DevOps YAML构建管道报NU1301错误
问题背景
将解决方案所有项目的Target Framework从5.0升级至6.0,同时升级了两个从Azure Releases源引入的自有NuGet依赖包的Target Framework。添加加载对应SDK版本的步骤后,构建运行测试时每个项目均出现以下错误:
F:\BuildAgents_work\286\s[Proj Name][Proj Name] : error NU1301: Unable to load the service index for source https://pkgs.dev.azure.com/[redacted]/_packaging/Releases/nuget/v3/index.json.
Failed to restore F:\BuildAgents_work\286\s[Proj Name]\ [Proj Name] (in 18.5 sec).
已确认此前构建步骤成功添加该源,但仍提示源不可用。
可能的原因及解决方法
1. .NET 6 SDK的NuGet配置隔离问题
.NET 6 SDK会使用独立的NuGet配置上下文,相比.NET 5,之前添加的源可能仅在全局配置或旧SDK环境中生效,未同步到.NET 6对应的配置里。
- 解决:在还原步骤中显式指定NuGet源,或在
dotnet restore命令中通过--source参数直接传入Azure Artifacts源地址(如需认证可搭配对应参数):
也可在管道中添加针对.NET 6的专属NuGet源配置步骤,确保源被添加到当前SDK环境的配置中。dotnet restore --source https://pkgs.dev.azure.com/[redacted]/_packaging/Releases/nuget/v3/index.json --source https://api.nuget.org/v3/index.json
2. 认证令牌过期/权限变更
虽然之前添加源成功,但升级SDK后,构建代理使用的认证令牌可能失效,或该令牌无Azure Artifacts Releases源的访问权限(升级依赖包后可能涉及新包版本的权限问题)。
- 解决:检查Azure DevOps管道中用于NuGet认证的服务连接是否有效,确保其拥有目标Artifacts源的读取权限;若使用个人访问令牌(PAT),确认令牌未过期且包含
Packaging Read权限。
在NuGet还原步骤前重新执行认证命令,确保上下文正确:nuget sources add -name "Releases" -source https://pkgs.dev.azure.com/[redacted]/_packaging/Releases/nuget/v3/index.json -username [username] -password [PAT]
3. .NET 6 SDK的网络策略变化
.NET 6对网络请求的代理设置、SSL证书验证逻辑做了调整,可能导致之前可访问的源现在无法连接。
- 解决:检查构建代理的网络代理设置,确保.NET 6 SDK能正常访问外部网络;若为自签名证书环境,需将证书导入.NET 6的信任存储,或在还原时通过
nuget.config配置信任设置:dotnet restore --source [your-source] --configfile nuget.config
4. 依赖包发布异常
虽然升级了依赖包的Target Framework,但包本身可能存在构建问题,或对应版本未在Azure Artifacts源中正确发布(比如发布失败但状态显示正常)。
- 解决:在本地使用.NET 6 SDK手动尝试还原该依赖包,确认源地址可访问且包存在;检查Azure Artifacts中对应包版本的Target Framework是否为.NET 6,且包文件完整。
5. 管道步骤顺序错误
若加载.NET 6 SDK的步骤在NuGet还原/构建步骤之后执行,会导致还原时仍使用旧版本SDK,引发源配置不兼容问题。
- 解决:确认管道中
UseDotNet(加载.NET 6 SDK)步骤位于NuGet还原、构建等步骤之前,确保后续步骤使用正确的SDK环境。
内容的提问来源于stack exchange,提问作者HelloWorld

