Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TFS2012生成服务器未从内部存储库还原NuGet包_Nuget_Tfsbuild - Fatal编程技术网

TFS2012生成服务器未从内部存储库还原NuGet包

TFS2012生成服务器未从内部存储库还原NuGet包,nuget,tfsbuild,Nuget,Tfsbuild,我已经设置了一个内部NuGet存储库(我们其中一台服务器上的共享文件夹),并已将其添加到我电脑上Visual Studio NuGet设置中的“可用源”列表中。我能够从该存储库成功地将包安装到我的解决方案中 但是,在TFS服务器上,生成失败,因为它无法还原此特定包(消息:“找不到包“xxx”的版本“xxx”)。该解决方案配置为“启用NuGet软件包还原”,这对于通过NuGet.org安装的软件包来说效果很好。它只是没有从我们的内部存储库中恢复包 对存储库文件夹/共享的权限正常。我错过了什么 我猜

我已经设置了一个内部NuGet存储库(我们其中一台服务器上的共享文件夹),并已将其添加到我电脑上Visual Studio NuGet设置中的“可用源”列表中。我能够从该存储库成功地将包安装到我的解决方案中

但是,在TFS服务器上,生成失败,因为它无法还原此特定包(消息:“找不到包“xxx”的版本“xxx”)。该解决方案配置为“启用NuGet软件包还原”,这对于通过
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源列表”现在报告所有自定义源。