azure devops & public 构建时的 nuget 上游行为

azure devops & public nuget upstreams behavior when building

我试图通过使用 single feed from the client 来遵循最佳实践。因此,我设置了一个 Nuget.config 文件,其中包含我的提要的单个条目,并带有文档中所述的 <clear/> 标签。

在 devops 服务器端,我已经为 public Nuget Gallery 设置了带有上游源的提要(为了缓存,因为这在 public 包的情况下听起来不错经理中断。

当我在任何机器上直接使用nuget.exe客户端时,我可以在任何情况下安装任何nuget.org包。但是在构建时,当 public 包不在我服务的上游缓存中时,构建代理将找不到它......(在这种情况下,上游似乎没有用于提供缓存)。

这正常吗?是否仅限于构建时已经缓存的包?

在我们的开发团队中,我们习惯通过VS添加nuget包UI(右键单击项目“管理nuget包”)。在这种模式下,我们看不到那些上游包,所以我们在开发时直接将源切换到 nuget。

我找到的解决方案可能是:

我错过了什么?你还有其他的吗ideas/solutions?

编辑:似乎由于以下错误而失败:

顺便说一句:我对 Azure Devops 很陌生(使用本地版本“Dev18.M170.6”)。

Is this normal? Is it limited to already cached packages at build time?

这不正常。不限于构建时的缓存包。

例如,我创建了一个新的测试提要,并启用 public Nuget Gallery 的上游源:

现在只有我之前测试过的几个包被缓存了,然后我添加另一个测试包log4net并用我的nuget.config恢复它:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="NewFeed" value="https://pkgs.dev.azure.com/<MyOrgName>/_packaging/NewFeed/nuget/v3/index.json" />
  </packageSources>
  
  <config>

</config>

  <packageSourceCredentials>
    <NewFeed>
      <add key="Username" value="XXX" />
      <add key="ClearTextPassword" value="XXX" />
    </NewFeed>
  </packageSourceCredentials>

</configuration>

nuget 恢复结果:

提要结果:

因此,它不限于构建时的缓存包。这个方法对你无效的原因需要具体分析你的nuget restore任务日志

提醒,请检查项目构建服务是否有权访问您的供稿:

Feed settings->Permissions->...->Allow Project-scoped build:

In our develoment team, we are used to add nuget packages through the VS UI (right click project "manage nuget packages"). In this mode, we can not see those upstreams packages, so we toggle the source to nuget directly at dev time.

您可以在 Visual Studio 中添加上游源 nuget.org 作为 nuget 源,您可以通过 VS UI 添加 nuget 包。当您在 Azure devops 中构建管道时,nuget 将从自定义提要恢复包并缓存来自上游源的包: