将私有Nuget包源添加到Visual Studio Online

11

我正在运行一个私有的 NuGet 包源,用于在我的项目之间共享某些函数和扩展。它在 Visual Studio 中很好用,但最近我开始在 Visual Studio Online 上为我的一个项目设置持续集成构建,似乎 VSO 无法查看我的私有包源。

我正在使用新的包还原方法——涉及在 VS 选项中设置“允许 NuGet 下载缺失的包”复选框。我没有使用解决方案上下文菜单中的“启用 NuGet 包还原”选项,因为这实际上是旧的方式,会在其他地方引起问题。

我也没有做任何修改项目文件的事情;我正在使用自定义的构建定义(使用 XAML 工作流),以便我可以通过在构建定义编辑器下拉菜单中选择它来将其应用于我的任何项目。我这样做是因为我添加了各种其他步骤,包括一些后构建脚本,以促进自动部署到托管服务器;其中一些步骤有点复杂,因此将它们保留在构建过程中意味着我只需要设置一次。

因此,在不使用将 nuget.exe 放入解决方案文件夹的旧上下文菜单解决方案,并且不对项目本身进行干扰的情况下,我该如何使 VSO 的构建从我的私有包源还原包?

构建工作流模板中有一个“NuGetRestore”活动,可以接受命令行参数。我已添加了以下内容:

"-source https://www.nuget.org/api/v2/ http://www.example.com/nuget"

但这似乎没有什么区别。此活动还有一个字段,用于“指定需要恢复其NuGet包的解决方案”,我刚将其设置为在定义构建时设置的ProjectsToBuild变量。 我从nuget.exe中没有收到任何错误(至少我看不到),但是构建失败了。有趣的是,它说相关的命名空间不存在,而不是引用无法解析。 有什么想法吗?


1个回答

3

我认为你需要做的是添加一个解决方案级别的 NuGet.config 文件。NuGet 配置文件与 web.config 类似,有层级关系。你可以在这里找到相关文档。

NuGet 会首先从默认位置加载 NuGet.config,然后再从当前驱动器根目录开始,按照当前目录结尾命名为 NuGet.config 的任何文件。

它看起来应该与下面类似:

    <?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageRestore>
        <!-- Allow NuGet to download missing packages -->
        <add key="enabled" value="True" />
        <!-- Automatically check for missing packages during build in Visual Studio -->
        <add key="automatic" value="True" />
    </packageRestore>
    <packageSources>
        <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
        <add key="PrivateNugetName" value="http://your.nuget.server.com/nuget" />
    </packageSources>
    <disabledPackageSources />
    <activePackageSource>
        <add key="All" value="(Aggregate source)" />
    </activePackageSource>
</configuration>

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