在构建项目引用和包期间,正在安装和引用不同版本的nuget包

时间:2016-09-07 12:44:38

标签: c# visual-studio rabbitmq nuget teamcity

在我们的构建服务器上,我有一个解决方案,其中所有项目都引用了兔子客户端工具Nuget包的3.6版本。但是,当我在构建服务器上构建解决方案时,它似乎正在下载兔子客户端工具的4.0.2版本。即使在我的代码中没有引用这个dll,或者我自己也可以使用easynetq库这一点。

我试过了:

  • 清除服务器上的nuget缓存
  • 清理结帐目录
  • 更改兔子客户端nuget版本
  • 检查app.config中的程序集绑定版本。

在构建之前一切正确。

顺便说一句,我不知道这是否会产生很大的不同,但是应用程序中的程序集重定向,我的应用程序的Web配置也会切换到4,即使我的本地代码是3.6.5

此外,这似乎通过视觉工作室2015构建得很好,所以我假设这必须是可以留在服务器上与Nuget有关的东西。

Packages.Config:

<packages>
  <package id="EasyNetQ" version="0.62.1.445" targetFramework="net452" />
  <package id="EasyNetQ.Management.Client" version="0.51.1.105" targetFramework="net452" />
  <package id="GuerrillaNtp" version="1.0.0.0" targetFramework="net452" />
  <package id="log4net" version="2.0.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Owin" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.OwinSelfHost" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.Owin" version="3.0.1" targetFramework="net452" />
  <package id="Microsoft.Owin.Diagnostics" version="3.0.1" targetFramework="net452" />
  <package id="Microsoft.Owin.Host.HttpListener" version="3.0.1" targetFramework="net452" />
  <package id="Microsoft.Owin.Hosting" version="3.0.1" targetFramework="net452" />
  <package id="Microsoft.Owin.SelfHost" version="3.0.1" targetFramework="net452" />
  <package id="mongocsharpdriver" version="2.2.3" targetFramework="net452" />
  <package id="MongoDB.Bson" version="2.2.3" targetFramework="net452" />
  <package id="MongoDB.Driver" version="2.2.3" targetFramework="net452" />
  <package id="MongoDB.Driver.Core" version="2.2.3" targetFramework="net452" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net452" />
  <package id="OctoPack" version="3.0.45" targetFramework="net452" developmentDependency="true" />
  <package id="Owin" version="1.0" targetFramework="net452" />
  <package id="RabbitMQ.Client" version="3.6.5" targetFramework="net452" />
  <package id="Swashbuckle.Core" version="5.4.0" targetFramework="net452" />
  <package id="Topshelf" version="3.1.2" targetFramework="net452" />
</packages>

1 个答案:

答案 0 :(得分:1)

尝试运行&#34;手动nuget restore&#34;在构建服务器上....只是为了看看它是否正常工作。暂时把它推到另一个&#34;包&#34;目录。我使用过&#34; MyPackages&#34;这里。

nuget.exe restore .\packages.config -PackagesDirectory .\MyPackages

您可以从此处获取命令行nuget.exe:

https://dist.nuget.org/index.html

这里的关键是:

您获得了哪些子文件夹?

  

&#34; \ MyPackages \ RabbitMQ.Client.4.0.2&#34;

和/或

  

&#34; \ MyPackages \ RabbitMQ.Client.3.6.5&#34;

如果&#34;手动nuget恢复&#34;工作正常 (在这种情况下只会得到子文件夹&#34;。\ MyPackages \ RabbitMQ.Client.3.6.5&#34;),然后在构建过程中会发生正常nuget工作流之外的事情。

OP ANSWER EDIT 这一调查并没有完全解决问题,但确实指出了在构建运行时更改包文件的其他内容。最终,TeamCity在其nuget包恢复中具有自动更新功能,但未记录该功能。