【问题标题】:NHibernate and Windsor assembly conflictsNHibernate 和 Windsor 程序集冲突
【发布时间】:2010-02-27 11:31:39
【问题描述】:

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

我有两个项目
-域模型
-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,版本=2.1.0.0,
调用程序集:NHibernate.ByteCode.Castle,版本=2.1.2.4000

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

我该如何让它发挥作用?我遗漏了什么或包含不正确?请帮忙..谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    否则,请按照 Lachlan Roche 的建议行事。

    【讨论】:

    • 从 NHibernate-2.1.2.GA-bin sourceforge.net 下载.. 感谢 ActiveRecord 选项。
    • 从 AR 获取 NHibernate 字节码提供程序是您目前最好的选择,因为 NHibernate 团队不提供 DynamicProxy 2.2 的更新下载
    【解决方案2】:

    您可以获取 NHibernate.ByteCode.Castle 的源代码并构建使用 Castle.DynamicProxy2 版本 2.2.0.6628 的版本。 2.1.x 分支是 svn 中的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>
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题...我通过 changing the NHibernate Bytecode provider 解决了它。
        当我开始使用 NHibernate 时,我无缘无故选择了 Castle Bytecode 提供程序。

        由于我不在乎我实际使用哪个字节码提供程序,我只是将其更改(在我的情况下为 NHibernate.ByteCode.LinFu)。
        所以 NHibernate 不再需要任何对 Castle 的引用,我可以使用任何我想要的 Windsor 版本。

        【讨论】:

          猜你喜欢
          • 2013-07-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-05
          • 1970-01-01
          • 2011-02-10
          相关资源
          最近更新 更多