TeamCity不从特定包源恢复NuGet包

Dav*_*ers 4 .net teamcity sitecore nuget nuget-package-restore

我最近从他们的新NuGet服务器向我的解决方案添加了一堆Sitecore NuGet包:https://sitecore.myget.org/F/sc-packages/api/v3/index.json

但TeamCity似乎无法下载这些:

[12:45:16][restore] Unable to find version '8.1.160302' of package 'Sitecore.ContentSearch.Linq.NoReferences'.
[12:45:16][restore] Unable to find version '8.1.160302' of package 'Sitecore.ContentSearch.NoReferences'.
[12:45:16][restore] Unable to find version '8.1.160302' of package 'Sitecore.Kernel'.
[12:45:16][restore] Unable to find version '8.1.160302' of package 'Sitecore.Kernel.NoReferences'.
Run Code Online (Sandbox Code Playgroud)

我在"NuGet Installer"构建步骤中修改了包源列表,以便Sitecore源是唯一的,但它仍然无法恢复这些.dll.(作为旁注:我原本以为其他软件包现在都会失败,因为它们的源已被删除,但那些没有错误?)

查看日志,我可以看到被触发的命令,看起来是正确的:

C:\TeamCity\buildAgent\tools\NuGet.CommandLine.2.8.6\tools\NuGet.exe restore C:\TeamCity\buildAgent\work\52ce411043f6b04c\MySolution.sln -Source https://sitecore.myget.org/F/sc-packages/api/v3/index.json
Run Code Online (Sandbox Code Playgroud)

jam*_*kam 6

您已经引用了Nuget v3提要,但看起来您的TeamCity Nuget安装程序步骤设置为使用Nuget.exe v2.8.6.更新设置以使用v3 +:

Nuget设置

我建议您不要在TeamCity中指定Package源,而是使用.sln文件Nuget.config旁边的文件.这也意味着每个开发人员不需要在Visual Studio中单独添加源代码,也不需要对源列表进行源代码控制.TeamCity还将自动将此列表用于包源.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
    <add key="Sitecore NuGet Feed" value="https://sitecore.myget.org/F/sc-packages/api/v3/index.json" />
    <add key="Custom Server" value="http://my-custom-server.org/api/v3/" />
  </packageSources>
</configuration>
Run Code Online (Sandbox Code Playgroud)

您可以在此博客文章中找到有关恢复NuGet包的正确方法的更多详细信息.

  • Doh - 简直不敢相信我错过了.仅供参考,我们确实将"NuGet.config"作为解决方案的一部分.我一直在尝试一大堆东西让它运转起来 (2认同)