我应该如何告诉TeamCity的NuGet Installer构建步骤使用NuGet.org和TeamCity提供的包源?

时间:2012-10-15 14:26:10

标签: teamcity nuget nuget-server

我的NuGet Installer构建步骤出了问题。

我们正在使用官方NuGet.org软件包和我们在TeamCity NuGet服务器上托管的软件包。如果我将Packages Sources留空,则会找到nuget.org中的包,但是一旦我指定%teamcity.nuget.feed.server%作为包源,就找不到nuget.org中的包。

我尝试将Packages Sources设置为包含两者,但它仍然不适用于官方nuget.org包。

https://nuget.org/api/v2/
%teamcity.nuget.feed.server%

这不是nuget.org包源的正确URL吗?如何告诉它使用这两个来源?

我在JetBrains Developer discussion board上问了这个问题,但没有得到任何答复。

4 个答案:

答案 0 :(得分:11)

有同样的问题,有趣的是我的Nuget来源被指定为
https://www.nuget.org/api/v2/
http://nugetserver/nuget
在第二个网址上添加正斜杠以使其http://mynugetserver/nuget/解决问题。 我花了一段时间才弄明白。现在我的Nuget-installer构建步骤正常运行。

答案 1 :(得分:8)

显然甚至不需要NuGet Installer构建步骤。我编辑了.nuget/NuGet.targets文件以包含两个路径并删除了NuGet安装程序构建步骤,它现在可以正常工作。

最初为此解决方案设置TeamCity时,如果没有NuGet安装程序步骤它就无法工作,所以我不知道还有什么其他方法可以使这项工作有所不同,但也许NuGet.targets文件是一直都很关键。

this blog post的评论指出了我正确的方向。

答案 2 :(得分:2)

您可以修改运行TeamCity的用户在 AppData 本地文件夹中的 NuGet.Config ,而不是修改每个项目的.targets文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <!--<add key="repositoryPath" value="J:\TeamCity7\buildAgent\work\my_shared_packages_dir" />-->
  </config>
  <packageRestore>
    <add key="enabled" value="True" />
  </packageRestore>
  <packageSources>
    <add key="NuGet official package source" value="https://nuget.org/api/v2/" />
    <add key="MMG TeamCity Nuget Server" value="http://myteamcityserver/guestAuth/app/nuget/v1/FeedService.svc" />
  </packageSources>
  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
</configuration>

每个项目中.nuget文件夹中的NuGet.exe将首先遵循此处设置的配置,然后应用.targets文件中完成的任何“覆盖”。

答案 3 :(得分:0)

这里的问题相同。我正在使用TeamCity v10,需要Nuget步骤(我的解决方案中没有.targets文件)。但是,我使用了另一种方法来添加&#34; extra&#34;包源:

c:\BuildAgent\tools\NuGet.CommandLine.2.7.0\tools\Nuget.exe sources Add -Name TeamCity-feed -Source http://myteamcityserver/guestAuth/app/nuget/v1/FeedService.svc/

之后,我添加了一个Nuget安装程序步骤,并且没有在TeamCity的包源框中指定任何内容,现在来自公共提要nuget.org和我的内部提要的两个包都可以毫无问题地恢复。