1

我一直在试图找到一个适用于Visual Studio 2008并使用NHibernate 3的夏普体系结构的版本,但一直没有成功。我想使用NHibernate版本3中的QueryOver API。我可以找到的最新版本是sharp-architecture-1.6.0.0-templify-package.zip,它与Visual Studio 2008,MVC 2和NHibernate 2兼容。所有夏普建筑较新的版本只与Visual Studio 2010兼容我试图使夏普建筑的自定义构建:有没有办法让Nhibernate 3与使用Visual Studio 2008的Sharp架构一起工作?

我在“SharpArchitecture 1.6完整源”项目改变了引用...:

  • 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到Version =通过用新的替换旧的DLL 2.5.2.0

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

无法加载文件或程序集“Castle.Core,版本= 2.5.1.0,文化=中立,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> 

但仍然没有奏效。

我在正确的轨道上吗?我还能做些什么才能使其发挥作用?

回答

1

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

因此,这将是一个有点麻烦,但不可管理。

注意:不要忘了像功能NHibernate项目也应更新为使用NH 3

+0

我已经更新了我的问题。 – Stu 2011-04-05 07:26:58

+0

我使用了nugets,它更新了我所有的dll – Xenon 2012-10-26 10:57:24

相关问题