在我们的构建服务器上,我有一个解决方案,其中所有项目都引用 rabbit 客户端工具 Nuget 包的 3.6 版。但是,当我在构建服务器上构建解决方案时,它似乎正在下载 rabbit 客户端工具的 4.0.2 版。即使在我的代码中也没有引用这个 dll,或者据我所知,我也在使用它的 easynetq 库。
我试过:
- 清除服务器上的 nuget 缓存
- 清理结帐目录
- 更改 rabbit 客户端 nuget 版本
- 检查了 app.config 中的程序集绑定(bind)版本。
在构建发生之前一切都是正确的。
顺便说一句,我不知道这是否会有很大的不同,但我的应用程序和 Web 配置中的程序集重定向也被切换为 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>
最佳答案
尝试在构建服务器上运行“手动 nuget 恢复”....只是为了看看它是否正常工作。暂时将其推送到不同的“packages”目录。我在这里使用了“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 工作流程之外的事情。
OP 答案编辑 这条调查线并没有完全解决问题,但确实指出了在构建运行时更改包文件的其他事情。它最终成为 TeamCity 在其 nuget 包恢复中具有自动更新功能,但未被记录。
关于c# - 在构建项目引用和包期间正在安装和引用不同版本的 nuget 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39370314/