【问题标题】:Different version of a nuget package is being installed and referenced during build to the project references and packages在构建项目引用和包期间,正在安装和引用不同版本的 nuget 包
【发布时间】:2016-09-07 12:44:38
【问题描述】:

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

我试过了:

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

在构建发生之前一切都是正确的。

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

此外,这似乎在 Visual Studio 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>

【问题讨论】:

  • 请发布您的 packages.config 文件。
  • 你是说你在“packages”目录中有一个名为“.\packages\RabbitMQ.Client.4.0.2”的子文件夹(~而不是“.\packages\RabbitMQ.Client.3.6 .5").... 和/或您的构建日志引用“4.0.2”?
  • 在构建服务器上执行此操作。删除“.\packages”下的所有子文件夹,并仅对 packages.config 文件运行手动 nuget 恢复。像这样: nuget.exe restore .\packages.config -PackagesDirectory .\MyPackages
  • 您可以在此处获取命令行 nuget.exe:dist.nuget.org/index.html
  • 那是一些严肃的巫术。至少你离问题更近了。我在这里尝试了您的 packages.config 并没有任何问题........所以我不知道。当我遇到巫毒问题时,我会使用“手动拉包.config”技巧,但以前从未听说过。

标签: c# visual-studio rabbitmq nuget teamcity


【解决方案1】:

尝试在构建服务器上运行“手动 nuget 恢复”......只是看看它是否正常工作。暂时将其推送到不同的“包”目录。我在这里使用了“MyPackages”。

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

您可以从这里获取命令行 nuget.exe:

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

这里的关键是:

你得到了哪些子文件夹?

".\MyPackages\RabbitMQ.Client.4.0.2"

和/或

".\MyPackages\RabbitMQ.Client.3.6.5"

如果“手动 nuget 还原”工作正常 (在这种情况下只会获取子文件夹“.\MyPackages\RabbitMQ.Client.3.6.5”),然后在您的构建过程中发生了正常 nuget 工作流程之外的事情。

操作答案编辑 这条调查线并没有完全解决问题,但确实指出了在构建运行时更改包文件的其他内容。它最终成为 TeamCity,在其 nuget 包还原中具有自动更新功能,该功能没有被记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-10
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    相关资源
    最近更新 更多