在 VSTS 中混合来自 nuget.org 和存储库文件夹的包

Mixing packages from nuget.org and repository folder in VSTS

我的解决方案从 Nuget.org 获取一些 nuget 包,其中一些在我的存储库中的 "lib" 文件夹下。我知道在我的存储库中包含软件包不是最佳选择,但现在,我坚持使用它。

在我的解决方案中 nuget.config 看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
    <add key="CustomSource" value="../lib" />
  </packageSources>
    <activePackageSource>
    <add key="All" value="(Aggregate source)"  />
  </activePackageSource>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
</configuration>

它在 Visual Studio 中运行良好。

在 VSTS 中,我更改了 nuget 恢复任务选项:

我的构建失败是这样的:

The nuget command failed with exit code(1) and error(Failed to retrieve information about 'Microsoft.Extensions.Configuration.Abstractions' from remote source 'D:\a\lib'.)

Packages failed to restore

显然,Microsoft.Extensions.Configuration.Abstractions 应该从 nuget.org 下载。我应该更改什么以便它尝试使用 2 个 nuget 源? 谢谢!

如果您在 NuGet 恢复任务中指定了自己的 NuGet.config 文件,它会将指定 NuGet.config 文件的内容保存到一个临时配置文件中,例如:D:\a\Nuget\tempNuGet_3274.config.

因此,如果您使用托管代理,则应将本地提要路径指定为:

<add key="CustomSource" value="../s/Projectname/lib" />

此外,您还可以使用位于您本地机器上的private agent,以便可以从其他目录找到包。