【问题标题】:Specify NuGet sources for build server to use with NuGet Package Restore?为构建服务器指定 NuGet 源以与 NuGet 包还原一起使用?
【发布时间】:2012-05-25 08:26:10
【问题描述】:

我正在使用 NuGet 包还原。我想在 TFS 构建服务器过程中指定自定义源。

隐藏的“.nuget”文件夹中的 NuGet.targets 文件表明您可以指定源存储库,或者它将回退到 %APPDATA%\NuGet\NuGet.config 中的 NuGet.config。

然而,隐藏的“.nuget”文件夹中也有一个 NuGet.config。我假设如果您没有在 NuGet.targets 中指定源存储库,它将回退到隐藏的“.nuget”文件夹中的 NuGet.config。情况似乎并非如此。

有什么想法吗?

【问题讨论】:

    标签: tfs nuget


    【解决方案1】:

    使用当前版本的 NuGet,可以在解决方案的 NuGet.config 文件中指定自定义存储库,并在构建期间启用包还原。 有了这个 NuGet.config 文件,我们可以在 TFS 构建下自动从内部存储库恢复包,而无需在构建定义中执行任何其他操作:

    <configuration>
      <solution>
        <add key="disableSourceControlIntegration" value="true" />
      </solution>
    
      <packageSources>
        <add key="Internal" value="http://MyInternalRepository/nuget" />
      </packageSources>
    
      <packageRestore>
        <add key="enabled" value="True" />
      </packageRestore>
    
    </configuration>
    

    注意:TFS2013 的默认构建过程模板已经实现了 NuGet 包还原工作流,无需任何特殊配置,如下所述:http://docs.nuget.org/docs/reference/package-restore-with-team-build

    【讨论】:

    • 这是“没有任何特殊配置”的有趣定义。事实上,那里记录的恢复的实现是通过自定义构建过程实现的——与构建过程模板无关。并不是说这些都回答了 OP 的问题。
    • @user1158174 如果您查看该页面上文章的开头,它会声明:For Team Foundation Build 2013 on-premises and Visual Studio Online (formerly Team Foundation Service), the default Build Process Templates already implement the NuGet Package Restore workflow without any special configuration. The following information only applies to Team Foundation Build 2012 and earlier, or to Build Process Templates that have been customized and had the NuGet Restore functionality removed.,所以是的,TFS 2013 已经 100% 自动执行(我们实际上在我们公司中使用它) )。
    【解决方案2】:

    如果启用包还原,您会在 $(SolutionDir)\.nuget 文件夹中找到 NuGet.targets MSBuild 文件。

    您可以通过修改 "" 元素来设置包源。

    例子:

    <!-- Package sources used to restore packages. By default will used the registered sources under %APPDATA%\NuGet\NuGet.Config -->
    <PackageSources>"http://packages.nuget.org/api/v2/;http://myget.org/F/myfeed/"</PackageSources>
    

    【讨论】:

    • 这根本没有回答问题。我已经指出您可以使用 NuGet.targets 来指定源。问题是关于 NuGet.config 以及是否会使用它。
    【解决方案3】:

    根据 NuGet 开发人员之一 pranavkm 的说法,在撰写本文时,NuGet 包还原不会使用隐藏的“.nuget”文件夹中的 NuGet.config 来获取源代码。它目前仅用于解决方案特定设置(忽略源代码控制绑定)。他说,NuGet 团队正在考虑利用 NuGet.config 的各个方面,但它的优先级不断提高。

    【讨论】:

    【解决方案4】:

    另一种选择是将源添加到构建服务器上的机器范围(非用户特定)的 nuget 配置中。

    https://stackoverflow.com/a/27569020/374837

    【讨论】:

      【解决方案5】:

      在 tfs build 2017 中,当您使用 NuGet 还原任务版本 1.* 时,您可以选择在构建期间使用的 NuGet.Config 文件。 见下图NuGet Restore Task

      【讨论】:

        猜你喜欢
        • 2018-07-13
        • 2012-10-27
        • 2018-01-23
        • 1970-01-01
        • 2012-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多