NuGet Package Restore找不到包,没有Source

时间:2013-06-17 15:51:02

标签: .net msbuild teamcity nuget

我在TeamCity上构建了一个TeamCity NuGet提要包,但是一个依赖的TC项目在包恢复期间无法看到它。

  

[14:05:02] [Exec] E:\ TeamCity-BuildAgent \ work \ 62023563850993a7 \ Web.nuget \ nuget.targets(88,9):无法找到包'MarkLogicManager40'的版本'1.0.17.0' ”。

     

[14:05:02] [Exec] E:\ TeamCity-BuildAgent \ work \ 62023563850993a7 \ Web.nuget \ nuget.targets(88,9):error MSB3073:命令“”E:\ TeamCity-BuildAgent \ work \ 62023563850993a7 \ Web.nuget \ nuget.exe“install”E:\ TeamCity-BuildAgent \ work \ 62023563850993a7 \ ProductMvc \ packages.config“-source”“ - RequestConsent -solutionDir”E:\ TeamCity-BuildAgent \ work \ 62023563850993a7 \ Web \“”以代码1退出。

请注意,NuGet命令行中的source参数为空。这可能是原因吗?

2 个答案:

答案 0 :(得分:41)

截至今天,NuGet.targets有以下方式指定自定义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://nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->

    <PackageSource Include="https://nuget.org/api/v2/" />
    <PackageSource Include="\\MyShare" />
    <PackageSource Include="http://MyServer/" />
</ItemGroup>

另一个选择是在解决方案文件旁边放置 NuGet.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="MyShare" value="\\MyShare" />
    <add key="MyServer" value="http://MyServer" />
  </packageSources>
  <activePackageSource>
    <add key="All" value="(Aggregate source)"  />
  </activePackageSource>
</configuration>

答案 1 :(得分:9)

显然,NuGet自定义源不是通过解决方案或项目文件中的任何内容设置的,也不是解决方案中的nuget.config,而是设置在开发人员配置文件中的nuget.config中。

在TeamCity上,代理没有检查此配置文件或写入它,以确保它包含TeamCity服务器本身的源。

因此,使用自定义TC Feed的TC恢复包不会“正常工作”。您必须浪费数百磅的客户资金追逐您的尾巴以发现所有这些,然后将您的配置文件中的nuget.config设置/复制到运行构建代理的用户帐户的配置文件中。

可怕。