TFS2012生成服务器未从内部存储库还原NuGet包
我已经设置了一个内部NuGet存储库(我们其中一台服务器上的共享文件夹),并已将其添加到我电脑上Visual Studio NuGet设置中的“可用源”列表中。我能够从该存储库成功地将包安装到我的解决方案中 但是,在TFS服务器上,生成失败,因为它无法还原此特定包(消息:“找不到包“xxx”的版本“xxx”)。该解决方案配置为“启用NuGet软件包还原”,这对于通过TFS2012生成服务器未从内部存储库还原NuGet包,nuget,tfsbuild,Nuget,Tfsbuild,我已经设置了一个内部NuGet存储库(我们其中一台服务器上的共享文件夹),并已将其添加到我电脑上Visual Studio NuGet设置中的“可用源”列表中。我能够从该存储库成功地将包安装到我的解决方案中 但是,在TFS服务器上,生成失败,因为它无法还原此特定包(消息:“找不到包“xxx”的版本“xxx”)。该解决方案配置为“启用NuGet软件包还原”,这对于通过NuGet.org安装的软件包来说效果很好。它只是没有从我们的内部存储库中恢复包 对存储库文件夹/共享的权限正常。我错过了什么 我猜
NuGet.org
安装的软件包来说效果很好。它只是没有从我们的内部存储库中恢复包
对存储库文件夹/共享的权限正常。我错过了什么
我猜我也必须在TFS服务器上配置VisualStudio的“可用源”,但这些设置可能是特定于用户的?生成服务作为网络服务运行,因此如何为此用户配置NuGet?将生成更改为作为特定帐户运行。然后,您可以使用该帐户登录并验证所有这些小障碍 根据您执行NuGet还原的方式,您是否使用本地源的位置更新了目标文件
<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>
您可以将源添加到TFS build server上的机器范围配置中,并且在执行包还原时,它将包含在源列表中 我所做的是创建一个文件
%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>
更新2016-11-18
根据(在突破性更改下),VS 2017+和NuGet 4.0+将机器范围的配置文件夹的位置更改为%ProgramFiles(x86)%\NuGet\config\
我尝试了这一方法,但最初没有成功。然后我意识到构建服务器运行的是旧版本的NuGet(2.2)。将其更新为2.8之后,它就工作了。我猜旧版本不理解NuGet.targets文件中的多包源语法。@AndrewStephens正确,包还原是从NuGet 2.7开始的,您的意思是%ProgramData%\NuGet\Config\(没有空格)?我们在构建中使用TFS 2015和Visual Studio 2015,所以我想编辑文件C:\ProgramData\NuGet\Config\VisualStudio\14.0\Microsoft.VisualStudio.Config,但没有ProgramData%\NuGet\Config\sources.Config就是答案。这让我发疯。无法识别我的条目NuGet.Config(在C:\Users\MyUser\AppData\Roaming\NuGet目录中)(在我的生成服务器上)。“nuget.exe源列表”现在报告所有自定义源。