1

我一直在尝试寻找与 Visual Studio 2008 一起使用并使用 NHibernate 3 的 Sharp Architecture 版本,但没有成功。我想使用 NHibernate 版本 3 中的 QueryOver API。我能找到的最新版本是 sharp-architecture-1.6.0.0-templify-package.zip,它与 Visual Studio 2008、MVC 2 和 NHibernate 2 兼容。所有的Sharp Architecture 的较新版本仅与 Visual Studio 2010 兼容。我尝试制作 Sharp Architecture 的自定义构建:

我更改了“SharpArchitecture 1.6 Full Source”项目中的引用...:

  • NHibernate.Validator 到版本 1.3.0.4000
  • NHibernate 到版本 3.1.0.4000
  • NHibernate.ByteCode.Castle 到版本 3.1.0.4000
  • FluentNHibernate 到版本 1.2.0.694
  • Castle.Core 到版本=2.5.2.0

...通过用项目 bin 目录中的新 dll 替换旧 dll。然后我运行 ClickToBuild.bat(位于下载的 Sharp Architecture zip 文件基目录中)来构建解决方案。构建成功,所有测试都通过了。然后我用我刚刚构建的新 Sharp Architecture 替换了我自己项目中的所有 dll。我的项目可以编译,但是当我运行它时,SharpArch.Data\NHibernate\NHibernateSession.cs 会抛出以下异常:

无法加载文件或程序集“Castle.Core,Version=2.5.1.0,Culture=neutral,PublicKeyToken=407dd0808d44fbdc”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

我尝试在 web.config 中为 Castle.Core 使用 bindingRedirect:

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral"/>
                <bindingRedirect oldVersion="2.5.1.0" newVersion="2.5.2.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

但这仍然行不通。

我在正确的轨道上吗?我还能做些什么来让它工作?

4

1 回答 1

1

我已经做到了。您只需更改 S# 项目中的引用,因为关于 S#,从 NH 2.1 到 3.0(或 3.1,如果您想要最新的)没有重大变化。

因此,这会有点麻烦,但绝对可以管理。

注意:不要忘记像 Fluent NHibernate 这样的项目也应该更新为使用 NH 3。

于 2011-03-17T08:24:14.187 回答