Nuget 还原不适用于 Azure Devops 中的工件源

San*_*Ben 3 nuget .net-core azure-devops azure-pipelines

NuGet 还原从同一组织中的另一个项目的提要失败 404。

nuget restore从管道中使用时,找不到不同项目中的提要。

San*_*Ben 6

经过长时间的搜索,这些是使其一致工作所必需的步骤:

设置权限

  • 确保消费项目禁用了此设置
    • 项目设置(左下角)--> 管道--> 设置-->将作业授权范围限制为当前项目(由另一个答案提供
  • 确保将消费项目的 Build Service 添加到 feed 的权限中

设置构建管道

  • 使用.Net Core CLI 任务
  • 理想情况下,您将使用 anuget.config file并确保将其签入
  • 设置feedsToUse'config'


azure-pipelines.yml

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


配置文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="feed_name" value="feed_url" />
  </packageSources>
</configuration>
Run Code Online (Sandbox Code Playgroud)



无需向管道添加身份验证任务,因为 dotnet 命令会自行执行此操作...但是:

大多数 dotnet 命令,包括构建、发布和测试,都包含一个隐式还原步骤。即使您在前面的步骤中成功运行了 dotnet 还原,这也会对经过身份验证的提要失败,因为前面的步骤将清理它使用的凭据。
-源(.NET Core CLI 任务文档)