我已经设置了一个内部NuGet存储库(我们其中一个服务器上的共享文件夹),并已将其添加到"可用来源"在我的电脑上的Visual Studio NuGet设置中列出。我能够从这个存储库成功地将软件包安装到我的解决方案中。
然而,在TFS服务器上,构建失败,因为它无法恢复此特定包(消息:"无法找到版本' xxx'包' xxx&# 39;&#34)。该解决方案配置为"启用NuGet包恢复",适用于通过nuget.org
安装的软件包。它只是不从我们的内部存储库恢复包。
存储库文件夹/共享的权限很好。我错过了什么?
我猜我必须配置Visual Studio"可用来源"在TFS服务器上也是如此,但可能这些设置是用户特定的?构建服务作为NETWORK SERVICE运行,那么如何为该用户配置NuGet?
答案 0 :(得分:28)
您可以将源添加到TFS构建服务器上的计算机范围的配置中,并且在执行程序包还原时它将包含在源列表中。
我所做的是创建一个包含以下内容的文件%ProgramData%\NuGet\Config\sources.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="internal source" value="http://internal_server/nuget/" />
</packageSources>
</configuration>
文件的名称无关紧要,它是文件的位置。 Nuget会获取该文件夹下的任何.config文件。
http://docs.nuget.org/docs/reference/NuGet-Config-File#NuGet_config_extensibility_point
更新2016-11-18
根据{{3}}(根据重大变化),VS 2017+和NuGet 4.0+将机器范围的配置文件夹的位置更改为%ProgramFiles(x86)%\NuGet\Config\
。
答案 1 :(得分:4)
更改您的构建以作为特定帐户运行。然后,您可以使用该帐户登录并证明所有这些小障碍。
根据您进行NuGet还原的方式,您是否使用本地Feed的位置更新了目标文件?
<ItemGroup Condition=" '$(PackageSources)' == '' ">
<!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
<!-- The official NuGet package source (https://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
<!--
<PackageSource Include="https://www.nuget.org/api/v2/" />
<PackageSource Include="https://my-nuget-source/nuget/" />
-->
<PackageSource Include="http://MyLocalFeed/nuget/nuget"/>
</ItemGroup>