如何重新编译Sharp Architecture库以使用NHIbernate 2.1.0.4000而不是2.1.0.3001

时间:2009-08-31 10:31:45

标签: nhibernate reference version s#arp-architecture

我更新了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)编译的

4 个答案:

答案 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# groupby 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"