当我安装fluentNhibernate时,nuget为什么要尝试强制和依赖升级

本文关键字:依赖 fluentNhibernate 安装 为什么 nuget | 更新日期: 2023-09-27 18:00:51

我已经在一个项目中有了nhibernate(版本3.3.1(,现在我正试图通过Nuget包管理器下载fluentNhibernate,我得到了这个错误:

PM> install-package fluentnhibernate -Version 1.3.0.733
Attempting to resolve dependency 'NHibernate (≥ 3.3.1.4000)'.
Attempting to resolve dependency 'Iesi.Collections (≥ 3.2 && < 4.0)'.
Successfully installed 'Iesi.Collections 3.2.0.4000'.
Successfully installed 'NHibernate 3.3.2.4000'.
Successfully installed 'FluentNHibernate 1.3.0.733'.
Install failed. Rolling back...
install-package : Updating 'NHibernate 3.1.0.4000' to 'NHibernate 3.3.2.4000' failed.     
Unable to find a version of 'NHibernate.Castle' that is compatible with 'NHibernate 
3.3.2.4000'.
At line:1 char:1
+ install-package fluentnhibernate -Version 1.3.0.733
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [Install-Package], InvalidOperationException
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand

我不明白为什么这没有成功,因为它说nhibernate只需要3.3.1或更高版本,那么为什么它试图强制升级到3.3.2(我想保持在3.3.1(,而3.3.2与castle不兼容。

对此有什么解释吗?或者有什么变通办法可以安装fluentnhibernate,但将nhibernat保持在当前版本(它说这很好(?

如有任何建议,我们将不胜感激。

当我安装fluentNhibernate时,nuget为什么要尝试强制和依赖升级

它正在尝试升级到NH3.3.2,因为这是满足Fluent NHibernate依赖关系的最新版本。我认为没有理由更喜欢3.3.1而不是3.3.2。你已经拥有的是3.1.0,它要老得多。

您还安装了NHibernate.Castle软件包,该软件包仅限于3.1.0.4000。

总结:

  • FluentHibernate 1.3.0.733需要NHibernate 3.3.1或更高版本
  • NHibernate。城堡3.1.0需要NHibernate3.1.0

由于没有更新版本的NHibernate.Castle可用,因此无法解决此问题。

从NH 3.2开始,您不再需要NHibernate.Castle(或类似的(,因为代理生成现在已经内置。除非您出于其他原因需要,否则您可以删除该包。

另请参阅NuGet参考中的"将升级限制为允许的版本"。