NHibernate和温莎组装冲突

时间:2010-02-27 11:31:40

标签: .net nhibernate orm castle-windsor assembly-resolution

我遇到了让Hibernate和Windsor一起工作的问题。我的设置详情如下

我有两个项目 -DomainModel
-MVCApp

我已经下载了NHibernate 2.1.2和Windsor 2.1.1
我在NHibernate下载的required_Bins文件夹中添加了以下对DomainModel的引用 -
Antlr3,Iese,log4net和NHibernate 2.1.2.4
我还在DomainModel中添加了对Lazy_loading文件的引用,包括

Castle.Core - 1.1.0.0
Castle.DynamicProxy2 - 2.1.0.0
NHibernate.ByteCode.Castle - 2.1.2.4

MVCApp有以下参考:<登记/>
Castle.Core - 1.2.0.6623
Castle.Microkernel - 2.1.0.6655
Castle.Windsor - 2.1.0.6655
Castle.DynamicProxy2 - 2.2.0.6628

运行应用程序时,我收到错误:

无法加载文件或程序集'Castle.DynamicProxy2,Version = 2.1.0.0,
调用程序集:NHibernate.ByteCode.Castle,Version = 2.1.2.4000

MVC bin文件夹具有Castle.DynamicProxy2 - 2.2.0.6628版本,因此请求旧版本后出现错误。

我如何让这个工作?我错过了什么或包含不正确?请帮忙..谢谢。

4 个答案:

答案 0 :(得分:3)

你从哪里得到你的NHibernate.ByteCode.Castle?

我相信ActiveRecord 2.1将为DynamicProxy2的最新稳定版本构建一个。

否则,做Lachlan Roche建议的事情。

答案 1 :(得分:2)

您可以获取NHibernate.ByteCode.Castle的源代码并构建一个使用Castle.DynamicProxy2版本2.2.0.6628的版本。 s.xn中的2.1.x分支是here

装配绑定重定向也可能有效。由于Castle.DynamicProxy2的2.1和2.2之间的API差异,这可能会失败 您还可以更新MVCApp项目中的程序集引用。

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="Castle.DynamicProxy2" publicKeyToken="407dd0808d44fbdc"/>
            <bindingRedirect oldVersion="2.1.0.0" newVersion="2.2.0.6628"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

答案 2 :(得分:0)

我有这个问题,您可能需要将项目属性的应用程序选项卡上的“目标框架”从“.NET Framework 4 Client Profile”更改为“.NET Framework 4”

答案 3 :(得分:0)

我遇到了同样的问题......我通过changing the NHibernate Bytecode provider解决了这个问题 当我开始使用NHibernate时,我没有特别的原因选择了Castle Bytecode提供程序。

因为我不关心我实际使用哪个字节码提供程序,所以我只是改了它(在我的例子中改为NHibernate.ByteCode.LinFu)。
所以NHibernate不再需要对Castle的任何引用了,我可以使用我想要的任何版本的Windsor。