为NuGet Package Restore指定用于构建服务器的NuGet源?

时间:2012-05-17 18:09:04

标签: tfs nuget

我正在使用NuGet Package Restore。我想在TFS构建服务器进程中指定自定义源。

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

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

有什么想法吗?

5 个答案:

答案 0 :(得分:30)

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

答案 1 :(得分:18)

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

您可以通过修改&lt; PackageSources&gt;“”&lt; / PackageSources&gt;来设置包源。元件。

示例:

<!-- 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>

答案 2 :(得分:6)

根据pranavkm,其中一个NuGet开发人员,在撰写本文时,NuGet Package Restore将不会在隐藏的“.nuget”文件夹中使用NuGet.config作为源。它仅用于特定于解决方案的设置(忽略源控件绑定)。他表示,NuGet团队可以利用NuGet.config的所有方面,但它不断受到优先考虑。

答案 3 :(得分:3)

另一个选择是在构建服务器上向计算机范围(非特定于用户)的nuget配置添加源。

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

答案 4 :(得分:0)

在tfs build 2017中使用

,当您使用NuGet Restore任务版本1. *时,可以选择要在构建过程中使用的NuGet.Config文件。 参见下图NuGet Restore Task