Nuget在Azure Devops中使用制品Feed无法还原。

5

NuGet恢复失败:同一组织内的另一个项目中的源无法找到。

使用nuget restore在管道中时,无法找到不同项目中的源。

2个回答

11

经过长时间的搜索,以下是使其始终正常工作所需的步骤:

设置权限

  • 确保将使用项目的Build Service添加到Feed的权限中
  • 确保使用项目已禁用以下两个设置
    • 项目设置(左下角)--> Pipelines --> 设置
      • 限制非发布管道的作业授权范围为当前项目
      • 限制发布管道的作业授权范围为当前项目

设置构建管道

  • 使用 .Net Core CLI Task
  • 最好使用 nuget.config 文件 并确保它被检入
  • feedsToUse 设置为 'config'

azure-pipelines.yml

- task: DotNetCoreCLI@2
      displayName: DotNetCore-Restore
      inputs:
        command: 'restore'
        projects: '$(PathToSolution)'
        feedsToUse: 'config'
        nugetConfigPath: '$(PathToNugetConfig)/nuget.config'
        includeNuGetOrg: true

nuget.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="feed_name" value="feed_url" />
  </packageSources>
</configuration>

在管道中添加身份验证任务是不必要的,因为dotnet命令会自动完成... 但是:

大多数 dotnet 命令(包括构建、发布和测试)都包括一个隐含的还原步骤。这将针对经过身份验证的源失败,即使您之前已成功运行了 dotnet restore 步骤,因为之前的步骤将清除其使用的凭据。


感谢您在这里分享您的解决方案,您能否将您的解决方案接受为答案呢?这对于遇到相同问题的其他成员来说会很有帮助,让他们更容易地找到解决方案。祝您拥有愉快的一天 :) - Hugh Lin
这似乎对于 dotnet add package 不起作用,正如您从微软文档中的最后一句引用所指示的那样。 - Lars Pellarin
1
我已经按照这篇文章的建议将项目级别的构建身份添加为Reader或Contributor,但仍然没有成功,直到我关闭了这个选项“将作业授权范围限制为当前项目”。 - Junlong Wang

0

您可以参考this文档,设置Azure Artifacts凭据提供程序,以便在各种工具中使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接