2013-02-23 21 views
2

我已經有一個項目(版本3.3.1)已經NHibernate的,現在我想通過NuGet包管理器下載fluentNhibernate和我得到這個錯誤:爲什麼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 

我不明白爲什麼這並未」 t成功,因爲它說nhibernate只需要3.3.1或更高版本,那麼爲什麼它試圖強制升級到3.3.2(我想保持它在3.3.1),然後與城堡不兼容。

是否有任何解釋或有任何解決方法,將安裝fluentnhibernate,但保持nhibernate在當前版本(它說很好)?

任何建議,將不勝感激。

+1

根據輸出你有NHibernate的3.1.0.4000而不是'3.3.1'你在你的文章中提到過...你可以運行'Get-Package'命令來列出當前安裝的軟件包併發布結果? – nemesv 2013-02-23 21:54:58

回答

3

它試圖升級到NH 3.3.2,因爲這是符合Fluent NHibernate依賴關係的最新版本。我沒有理由比3.3.2更喜歡3.3.1。你已經擁有的是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參考中的Constraining Upgrades To Allowed Versions

+0

保留NHibernate.Castle的一個可能的原因是內置代理生成與一些FNH + Castle編寫的FNH代碼庫存在一些嚴重的兼容性問題 - 因爲這個原因,我不得不使用舊版本的FNH。 – 2013-02-25 15:15:55

相關問題