Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/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
我应该如何告诉TeamCity';s NuGet安装程序构建步骤是否同时使用NuGet.org和TeamCity提供的包源代码?_Teamcity_Nuget_Nuget Server - Fatal编程技术网

我应该如何告诉TeamCity';s NuGet安装程序构建步骤是否同时使用NuGet.org和TeamCity提供的包源代码?

我应该如何告诉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

我的NuGet安装程序构建步骤有问题

我们使用的是官方的NuGet.org软件包和TeamCity NuGet服务器上托管的我们自己的软件包。如果我将Packages Sources留空,则会找到nuget.org中的包,但只要我指定
%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”命令来执行相同的操作。