【问题标题】:Nuget restore not working with artifact feed in Azure DevopsNuget 还原不适用于 Azure Devops 中的工件源
【发布时间】:2020-08-06 15:14:38
【问题描述】:

NuGet 还原失败,来自同一组织中另一个项目的提要。

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

【问题讨论】:

    标签: .net-core azure-devops nuget azure-pipelines


    【解决方案1】:

    经过长时间的搜索,这些是使其始终如一地工作的必要步骤:

    设置权限

    • 确保将消费项目的 Build Service 添加到 feed 的权限中
    • 确保消费项目有这两个设置禁用
      • 项目设置(左下)--> 管道--> 设置
        • 将作业授权范围限制为当前项目的非发布管道
        • 将作业授权范围限制为发布管道的当前项目

    设置构建管道

    • 使用.Net Core CLI Task
    • 理想情况下,您应该使用nuget.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
    

    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, 因为前面的步骤将清理它使用的凭据。

    【讨论】:

    • 感谢您在这里分享您的解决方案,您能接受您的解决方案作为答案吗?因此,对于遇到相同问题的其他成员轻松找到解决方案将很有帮助。祝你有美好的一天:)
    • 这似乎不适用于dotnet add package,正如您在 MS 文档中的最后引用所示。
    • 我已经根据 post 将项目级构建身份添加为读者或贡献者,但仍然没有运气,直到我关闭此选项 将工作授权范围限制为当前项目
    【解决方案2】:

    您可以参考this doc 来设置 Azure Artifacts Credential Provider,以便在各种工具中使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 2014-04-13
      相关资源
      最近更新 更多