我更新了Sharp Architecture解决方案(SharpArchitecture_1.0_RTM_build_486)(我的本地副本)并引用了NHibernate 2.1.0.4000而不是NHibernate 2.1.0.3001 dll。我还更新了Sharp Architecture解决方案中所有其他NHibernate相关参考资料。
我能够重建Sharp Architecture并使用NHibernate 2.1.0.4000版传递所有测试。我使用了提供构建脚本。
当我在我的应用程序中更新引用(NHibernate并重新编译Sharp dll)并尝试初始化NHibernate时,应用程序抛出“无法加载文件或程序集”NHibernate,Version = 2.1.0.3001,Culture = neutral,PublicKeyToken = aa95f207798dfdb4'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT的异常:0x80131040)“
在NHibernateSession.Init方法中抛出此错误。调用程序集是SharpArch.Data。
除了使用新dll重新编译Sharp架构外,是否还需要做其他事情? Sharp Architecture是针对NHibernate 2.1.0.3001的强类型。
我之所以这样做是因为我想在我的应用程序中包含NHibernate.Cache。 NHibernate.Cache是针对NHibernate 2.1.0.4000(NHibernate-2.1.0.GA-bin)编译的
答案 0 :(得分:5)
在打开system-web标记之前,在web.config文件中添加以下内容。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="NHibernate" publicKeyToken="AA95F207798DFDB4" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-2.1.0.3001" newVersion="2.1.0.4000"/>
</dependentAssembly>
</runtime>
这应该可以解决问题。
答案 1 :(得分:1)
类似的问题已被问及in the s# group和by Tom Cabanski
需要在原始S#-Arch源中进行名称更改,因此您还需要重新构建(不仅仅是基于框架构建的自己的解决方案)。
截至撰写时,这些变化还没有进入后备箱,所以除非你真的绝望,否则可能值得等待?
答案 2 :(得分:0)
尝试从PC中查找并删除所有2.1.0.3001版本的DLL(包括GAC中的DLL版本),然后重新编译/重新运行。希望你从试图引用该版本DLL的任何内容中得到错误,你可以更新该引用以使用较新的2.1.0.400版本的DLL。
答案 3 :(得分:0)
newVersion="2.1.0.4000"
应为newVersion="2.1.1.4000"