【问题标题】:Use custom NuGet feed in Visual Studio Online在 Visual Studio Online 中使用自定义 NuGet 源
【发布时间】:2015-04-24 09:32:27
【问题描述】:

我有一个 Visual Studio 项目,它依赖于我们公司提要中提供的一些 NuGet 包。该提要可从网络访问。该项目存储在 Git 存储库的 Visual Studio Online 中。但是那些 NuGet 包不是!我想使用 VSO 的自动构建和持续集成功能。我如何“告诉”VSO 这些 NuGet 包不应该从 nuget.org 下载,而应该从 www.example.com 获取?有办法吗?

【问题讨论】:

    标签: git nuget build-automation azure-devops


    【解决方案1】:

    您的解决方案中应该有这样的 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 指令或程序集引用?)”
    • 很抱歉。当我明天上班时,我会尝试重新创建您的确切场景。我将在一台机器上托管一个 nuget 库并在 Azure 上托管它。然后设置一个 VSO 项目并尝试从 azure 机器解析一个包。这会是对您情况的准确再现吗?
    • 所以,我找到了问题所在:我的 nuget.config 不在 .nuget 文件夹中,而是在我的项目的根目录中。当我将它移到 .nuget 文件夹时,一切都像魅力一样,谢谢!
    • 嘿,很高兴这对你有用。如果另一个人有同样的问题,我会用该信息更新我的答案。在您的项目中,您是否选择启用包还原?我怀疑它也适用于解决方案根目录
    • 如果您使用的是 Nuget 2.7+,则包还原的工作方式不同于 2.7 之前的方式。因此,我允许 Nuget 在构建期间通过在 NuGet 包管理器选项中设置检查来下载丢失的包。
    猜你喜欢
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    相关资源
    最近更新 更多