2

我已经在一个项目(3.3.1 版)中安装了 nhibernate,现在我正在尝试通过 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)哪个然后与城堡不兼容。

对此是否有任何解释,或者是否有任何解决方法可以安装 fluentnhibernate 但将 nhibernate 保持在当前版本(它说没问题)?

任何建议,将不胜感激。

4

1 回答 1

3

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

您还安装了 NHibernate.Castle 包,它仅限于 3.1.0.4000。

总结一下:

  • FluentNHibernate 1.3.0.733 需要 NHibernate 3.3.1 或更高版本。
  • NHibernate.Castle 3.1.0 需要 NHibernate 3.1.0。

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

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

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

于 2013-02-25T06:53:52.970 回答