TFS2012构建服务器不从内部存储库恢复NuGet包

And*_*ens 14 tfsbuild nuget tfs2012

我已经建立了一个内部NuGet存储库(我们的一个服务器上的共享文件夹),并将其添加到我PC上的Visual Studio NuGet设置中的"可用源"列表中.我能够从这个存储库成功地将软件包安装到我的解决方案中.

但是在TFS服务器上,构建失败,因为它无法恢复此特定包(消息:"无法找到包'xxx'的版本'xxx'").该解决方案配置为"启用NuGet包还原",适用于通过安装的包nuget.org.它只是没有从我们的内部存储库恢复包.

存储库文件夹/共享的权限很好.我错过了什么?

我猜我必须在TFS服务器上配置Visual Studio的"可用源",但可能这些设置是用户特定的?构建服务作为NETWORK SERVICE运行,那么如何为该用户配置NuGet?

Jef*_*ler 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>
Run Code Online (Sandbox Code Playgroud)

文件的名称无关紧要,它是文件的位置.Nuget选择该文件夹下的任何.config文件.

http://docs.nuget.org/docs/reference/NuGet-Config-File#NuGet_config_extensibility_point

更新2016-11-18 根据http://blog.nuget.org/20161121/introducing-nuget4.0.html(根据重大变化),VS 2017+和NuGet 4.0+更改了机器范围的配置文件夹的位置到%ProgramFiles(x86)%\NuGet\Config\.


Jus*_*TFS 4

更改您的构建以作为特定帐户运行。然后您可以使用该帐户登录并证明所有这些小问题。

根据您执行 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>
Run Code Online (Sandbox Code Playgroud)