在Visual Studio Online中使用自定义NuGet源

9

我有一个依赖于一些NuGet包的Visual Studio项目,这些包可以从我们公司的源获取,该源可以从Web访问。该项目存储在Git存储库中的Visual Studio Online中。但是这些NuGet包不在其中!我想使用VSO的自动构建和持续集成功能。我如何“告诉”VSO不应从nuget.org下载这些NuGet包,而应从www.example.com获取?是否有一种方法可以实现呢?

1个回答

10

你的解决方案中应该有一个像这样的nuget.config文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageRestore>
        <add key="enabled" value="True" />
        <add key="automatic" value="True" />
    </packageRestore>
    <packageSources>
        <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
        <add key="myCompany" value="http://XX.XX.XXX.XX:81/$pathToMyFeed$" />
    </packageSources>
    <activePackageSource>
        <add key="All" value="(Aggregate source)" />
    </activePackageSource>
</configuration>

注意 packageSources 部分。通过在此处添加您的私有源,您使其在解析软件包时对解决方案可用。构建时,应同时使用两个源来解析软件包。

NB nuget.config 文件应位于解决方案根目录中的 .nuget 文件夹中。


似乎它不起作用。我创建了一个名为“nuget.config”的文本文件,并在其中添加了您的内容。我还修改了我们私有nuget源的http地址。但是,我仍然从VSO的构建系统中收到错误消息:“找不到类型或命名空间名称'XXX'(是否缺少using指令或程序集引用?)” - Daniel Vygolov
抱歉,明天上班后我会尝试重新创建您的确切场景。我将在一台机器上托管NuGet Gallery,并将其托管在Azure上。然后我将设置一个VSO项目,并尝试从Azure机器解决一个包。这样做是否可以准确地重现您的情况? - Joseph Devlin
嘿,很高兴那对你有用。我会更新我的答案,以便其他人遇到同样的问题时可以参考。在你的项目中,你选择启用了包恢复吗?我猜在解决方案根目录下也会对你起作用。 - Joseph Devlin
如果您使用的是Nuget 2.7+,那么软件包还原的工作方式与2.7之前的版本不同。因此,我通过在NuGet软件包管理器选项中设置一个检查来允许Nuget在构建过程中下载缺失的软件包。 - Daniel Vygolov
你的版本是2.7或更高吗? - Joseph Devlin
显示剩余2条评论

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