我应该如何告诉TeamCity';s NuGet安装程序构建步骤是否同时使用NuGet.org和TeamCity提供的包源代码?
我的NuGet安装程序构建步骤有问题 我们使用的是官方的NuGet.org软件包和TeamCity NuGet服务器上托管的我们自己的软件包。如果我将Packages Sources留空,则会找到nuget.org中的包,但只要我指定我应该如何告诉TeamCity';s NuGet安装程序构建步骤是否同时使用NuGet.org和TeamCity提供的包源代码?,teamcity,nuget,nuget-server,Teamcity,Nuget,Nuget Server,我的NuGet安装程序构建步骤有问题 我们使用的是官方的NuGet.org软件包和TeamCity NuGet服务器上托管的我们自己的软件包。如果我将Packages Sources留空,则会找到nuget.org中的包,但只要我指定%teamcity.nuget.feed.server%作为包源,则不会找到nuget.org中的包 我尝试将包源设置为同时包含这两个包,但对于正式的nuget.org包仍然不起作用 https://nuget.org/api/v2/ %teamcity.nuget
%teamcity.nuget.feed.server%
作为包源,则不会找到nuget.org中的包
我尝试将包源设置为同时包含这两个包,但对于正式的nuget.org包仍然不起作用
https://nuget.org/api/v2/
%teamcity.nuget.feed.server%
这不是nuget.org包源的正确URL吗?我如何告诉它使用这两种来源
我在网上问了这个问题,但没有得到任何回应 显然,甚至不需要NuGet安装程序构建步骤。我编辑了
.nuget/nuget.targets
文件以包含这两个路径,并删除了nuget安装程序构建步骤,现在就可以工作了
最初为此解决方案设置TeamCity时,如果没有NuGet安装程序步骤,它就无法工作,因此我不知道我还做了哪些不同的工作来实现这一点,但可能NuGet.targets文件一直是关键
关于的评论为我指明了正确的方向。您可以在AppData本地文件夹中为TeamCity运行的用户修改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文件中完成的任何“覆盖”。也有同样的问题,有趣的是,我的NuGet源被指定为
https://www.nuget.org/api/v2/
http://nugetserver/nuget
在第二个url上添加正斜杠,使其成为
http://mynugetserver/nuget/
修复了该问题。
我花了一段时间才弄明白。现在,我的Nuget安装程序构建步骤运行正常。这里也有同样的问题。我使用的是TeamCity v10,需要Nuget步骤(我的解决方案中没有.targets文件)。但是,我使用了另一种方法来添加“额外”包源:
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的包源框中指定任何内容,现在来自public feed Nuget.org的包和我的内部feed都可以毫无问题地恢复。这一解决方法是否适用于TC的私有feed?我在msbuild步骤中收到一个错误,表示它无法在非交互式会话中请求凭据。我正在试图找到一个使用私有提要的解决方案,也许你可以帮助我?我还没有尝试设置私有提要,所以我不知道这是否适用于该场景。是的,这也是我必须要做的。这里有一个例子:
我相信,如果您只想下载项目中安装的当前软件包版本,那么确实不需要NuGet安装程序步骤。如果要首先更新packages.config中指定的那些包,则需要在生成之前首先运行NuGet Installer步骤,以根据NuGet Installer步骤设置获取更新以进行更新。在我们的nuget.targets文件中,我添加了我们的定制nuget内部服务器,因此当前的软件包被拉下来,工作得很好,但这不会得到更新,因此需要nuget安装程序步骤。听起来合理还是不合理?您可以在服务器上以该用户的身份运行时使用“NuGet sources add”命令来执行相同的操作。