NU1301错误排查:流水线Test任务无法加载NuGet源服务索引的解决方法
NU1301错误原因及解决办法
核心原因
- Test任务自动还原未使用指定配置:
dotnet test默认会自动执行依赖还原,但这个自动还原不会继承dotnet restore任务的nuget.config配置,导致它加载了Agent全局配置或项目残留的无效源(比如日志中的my-feed-mes),而这些源无法正常访问。 - 权限不一致:
restore任务可能配置了访问内部Feed的凭据,但Test任务自动还原时未携带权限信息,无法访问私有源。 - 存在未清理的无效源配置:某个项目文件(如
MyProject.Contracts.csproj)或其他层级的nuget.config中硬编码了my-feed-mes这个无效源,Test还原时会尝试加载它。
解决办法
方法1:禁用Test任务自动还原(推荐)
既然已经单独执行过restore任务,无需在Test阶段重复还原,直接添加--no-restore参数:
- task: DotNetCoreCLI@2 displayName: 'Run Tests' inputs: command: 'test' projects: '**/*.tests*/*.csproj' arguments: '--configuration $(buildConfiguration) --collect:"XPlat Code Coverage" --no-restore' publishTestResults: true
方法2:让Test任务使用指定的nuget.config
如果确实需要在Test阶段还原,显式指定和restore任务一致的配置文件:
- task: DotNetCoreCLI@2 displayName: 'Run Tests' inputs: command: 'test' projects: '**/*.tests*/*.csproj' arguments: '--configuration $(buildConfiguration) --collect:"XPlat Code Coverage"' publishTestResults: true feedsToUse: 'config' nugetConfigPath: './nuget.config'
方法3:清理无效源配置
- 检查所有
.csproj文件,确认没有硬编码的<PackageSource>节点,比如:<PackageSources> <add key="my-feed-mes" value="https://pkgs.dev.azure.com/my-feed-mes/_packaging/my-feed-mes/nuget/v3/index.json" /> </PackageSources> - 检查Agent全局
nuget.config(通常在%AppData%\NuGet\NuGet.Config或~/.nuget/NuGet/NuGet.Config),移除my-feed-mes相关源配置。
方法4:统一权限配置
如果是权限问题,确保流水线配置的内部Feed访问凭据(如Azure DevOps的PAT)能被所有dotnet任务继承,或在nuget.config中通过流水线变量配置凭据(避免明文存储敏感信息)。
内容的提问来源于stack exchange,提问作者kbd
相关产品推荐
相关产品推荐

