2012-03-21 30 views
3

..但不是k.i.s.s.i.n.gNInject和NHibernate,坐在樹上

我想用NHibernate的NInject。通過的NuGet我使用

  • NHibernate的v3.1.0.4000
  • NHibernate.Castle v3.1.0.4000
  • NHibernate.Linq 1.0
  • FluentNHibernate v1.2..0.712
  • NInject v2.2.1.4

當我試圖解決通過NInject類我得到以下錯誤:

無法加載文件或程序集「NHibernate的,版本= 2.1.2.4000文化=中性公鑰= aa95f207798dfdb4」或它的一個依賴。定位的程序集清單定義與程序集引用不匹配。 (異常來自HRESULT:0x80131040)

我已經中的app.config以下

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" /> 
    <bindingRedirect oldVersion="2.1.0.4000-2.1.2.4000" newVersion="3.1.0.4000" /> 
    </dependentAssembly> 
</assemblyBinding> 

我注意到,下載NInject包中包含\包在以下\ Ninject.2.2.1.4 \ lib中

  • .. \ net35客戶端
  • .. \ net35 - 全
  • .. \ net40客戶端
  • .. \ NET4 0-Full

當我使用NuGet來管理特定庫的軟件包時,上面哪個版本被包含在內?這是一個問題,可以通過手動添加對正確的Ninject DLL的引用來解決?

TIA

+3

降NHibernate.Linq,你用NH3它有它自己的LINQ提供程序。 – Phill 2012-03-21 11:02:42

+2

+1在標題一棵樹使用坐。 – 2012-03-21 11:56:50

+0

謝謝Phill。我已經刪除NH.Linq和更換我的session.Query session.Linq呼叫我的倉庫類。但是,我們的存儲庫基礎擴展了NHibernateContext。 NH3中的NHibernateContext在哪裏?它被什麼取代了? – 2012-03-21 14:09:36

回答

3

NuGet根據項目類型決定使用哪個版本。例如。是你正在編寫.NET客戶端輪廓組件則反而會加重net40客戶端

參考您可以參考任何你喜歡的手工裝配。但通常NuGet已經選擇了正確的版本。

2

跌落參考NH.Linq解決問題,因爲菲爾建議

+1

對不起,反應遲緩,很高興它解決您的問題。我不知道NH背景下,我沒有必要對NH3延長除了用戶類型。 – Phill 2012-03-22 23:18:44