如何为构建服务器指定NuGet源以用于NuGet包恢复?

40

我正在使用NuGet包恢复功能。我想在TFS构建服务器过程中指定自定义源。

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

然而,“.nuget”文件夹中也有一个NuGet.config文件。我假设如果您没有在NuGet.targets中指定源存储库,则会回退到隐藏的“.nuget”文件夹中的NuGet.config。但事实并非如此。

有任何想法吗?

5个回答

31

使用当前版本的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

这是一个有趣的“没有任何特殊配置”的定义。实际上,那里记录的Restore的实现是通过自定义构建过程完成的 - 与构建过程模板无关。不过这些都没有回答OP的问题。 - bornfromanegg
1
如果您查看该页面上文章的开头,它会声明:对于Team Foundation Build 2013 on-premises和Visual Studio Online(以前称为Team Foundation Service),默认的Build Process Templates已经实现了NuGet Package Restore工作流程,无需任何特殊配置。以下信息仅适用于Team Foundation Build 2012及更早版本,或已自定义并删除了NuGet Restore功能的Build Process Templates。,所以是的,TFS 2013已经可以100%自动化地完成它(我们公司实际上正在使用它)。 - julealgon

19
如果启用包恢复,将在$(SolutionDir)\.nuget文件夹中找到一个名为NuGet.targets的MSBuild文件。
您可以通过修改<PackageSources>""</PackageSources>元素来设置包源。
示例:
<!-- 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>

4
完全没有回答问题。我已经指出你可以使用NuGet.targets来指定源。问题是关于NuGet.config是否会被使用。 - dreadwail

6
据NuGet开发人员之一pranavkm透露,在撰写本文时,NuGet包还不能使用隐藏的“.nuget”文件夹中的NuGet.config作为源。目前这个设置只用于忽略源代码控制绑定。他表示,NuGet团队正在计划利用NuGet.config的所有方面,但优先级不高,一直被推迟。

3
FYI,更新:从v2.1开始支持层次化的NuGet.config文件。请参见http://docs.nuget.org/docs/release-notes/nuget-2.1。 - Xavier Decoster
1
对于未来的互联网搜索者,"nuget.exe"的命令行版本是-Source "https://www.nuget.org/api/v2/;http://myother source/myrepository/"。 - granadaCoder

3

0

在 TFS Build 2017 中,当您使用 NuGet Restore 任务版本 1.* 时,您可以选择在构建期间使用的 NuGet.Config 文件。 请参见下面的图片 NuGet Restore Task


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