40

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

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

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

有任何想法吗?

4

5 回答 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

于 2014-07-02T09:40:52.717 回答
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>
于 2012-05-17T18:28:59.183 回答
6

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

于 2012-05-17T20:37:06.670 回答
3

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

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

于 2014-12-19T15:35:14.480 回答
0

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

于 2018-08-15T19:37:54.297 回答