我遇到了让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版本,因此请求旧版本后出现错误。
我如何让这个工作?我错过了什么或包含不正确?请帮忙..谢谢。
答案 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。