我们有一个内部 Azure DevOps 2019 服务器,我目前正在为新的 .Net6 解决方案设置构建,该解决方案的项目引用来自 nuget.org 的各种包以及我们 ADO 服务器“工件”区域中的内部源.
这是 .Net6,我假设我必须使用“.Net Core”恢复任务(黑色方形图标),而不是旧的“NuGet”恢复任务(蓝色图标)?因此,我添加了前者,并配置了相关设置,如下所示,其中“NuGetPackages”是我们内部提要的名称:
当我运行构建时,此任务失败并显示消息
错误NU1301:无法加载源http://***/_packaging/2df3c440-07a5-4c01-8e5c-bfbd6e132f09/nuget/v3/index.json的服务索引。
我们内部 feed 的 URL 是:
http://***/_packaging/NuGetPackages/nuget/v3/index.json
,那么为什么 URL 中的 feed 名称被替换为错误消息中所示的 GUID?大概这就是恢复失败的原因。
顺便说一句,我们有许多 .Net Framework 4.x 解决方案,它们引用相同的包并且构建得很好。这些使用较旧的“NuGet”(蓝色图标)恢复任务,但设置与上图中的设置相同,表明较新的“.Net Core”任务正在做一些奇怪的事情。
(顺便说一句,有人可以解释“NuGet”任务和“.Net Core”任务之间的区别吗?我仍然可以在我的.Net6构建管道中使用旧任务吗?我之前曾短暂尝试过,但它抱怨 msbuild v17 尚未安装,并且不想继续沿着这条路走,因为担心破坏 4.x 版本)。
这里没有提到的事情,但当我尝试从不同项目中的提要恢复但同一组织是消费项目的某些设置时,这一直是我痛苦的根源......(原文如此。https:/ /developercommunity.visualstudio.com/t/restore-nuget-task-unable-to-load-the-service-inde/1337219)
将管道权限添加到 NuGet 源后(按照 https://learn.microsoft.com/en-us/azure/devops/artifacts/feeds/feed-permissions?view=azure-devops#pipelines-permissions ),您需要更新正在恢复 feed 的项目中的
Limit job authorization scope...
设置。
我刚刚花了近两天的时间来解决同样的 NU1301 错误,虽然我的 ADO 实例是基于云的并且是“最新的”,即与您的情况不完全相似,但也许我的经验会有所启发。
tldr;问题是,访问“组织”Artifact feed 的 ADO“项目”构建服务帐户存在权限问题。 DotNetCoreCLI@2 恢复任务的输出甚至没有暗示这个方向,但是当我重新使用 NuGet 恢复任务时,错误消息提供了更多信息,并帮助我发现了根本问题。
此信息并未阐明您询问的 guid/名称交换问题,但 guid 可能是一个内部 ID,首先用于解析名称,如果权限问题甚至阻止查询 Artifacts 端点...
至于 msbuild v17 评论,我会非常仔细地注意这个建议以及您对扰乱现有构建的恐惧。套用那句古老的俏皮话……如果 MS 拥有破坏长期运行良好的东西的悠久历史,那么这并不是真正的偏执! ;-}
HTH.
SC