我有NHibernate 2.1.2.4000,需要Antlr 3.1.1
我通过使用需要Antlr的WebGrase进行缩小捆绑来提高Web应用程序的性能(> = 3.4.1.9004)性能提高了约38.8%。想要了解详情,请查看以下链接:https://docs.microsoft.com/en-us/aspnet/mvc/overview/performance/bundling-and-minification y https://docs.microsoft.com/en-us/aspnet/core/client-side/bundling-and-minification
我同时拥有ANtlr Dlls。
当我转到使用NHibernate的控制器时,我得到一个例外:
发生了'System.IO.FileLoadException'类型的异常 NHibernate.dll但未在用户代码中处理
其他信息:无法加载文件或程序集 'Antlr3.Runtime,版本= 3.1.0.39271,文化=中立, PublicKeyToken = 3a9cab8f8d22bfb7'或其依赖项之一。该 找到程序集的清单定义与程序集不匹配 参考。 (HRESULT异常:0x80131040)
这个错误出现了,因为它引用了新的ANTLR库,我需要的是在时间旅行并使用旧库。
web.config
内的重定向,直到现在都没有成功。信息:
<Reference Include="antlr.runtime, Version=2.7.7.3, Culture=neutral, PublicKeyToken=d7701e059243744f">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Dependencies\Antlr.3.1.1\lib\antlr.runtime.dll</HintPath>
</Reference>
<Reference Include="Antlr3.Runtime, Version=3.4.1.9004, Culture=neutral, PublicKeyToken=eb42632606e9261f, processorArchitecture=MSIL">
<HintPath>..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Antlr3.Utility, Version=0.1.0.39272, Culture=neutral, PublicKeyToken=3a9cab8f8d22bfb7, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Dependencies\Antlr.3.1.1\lib\Antlr3.Utility.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=2.1.2.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Dependencies\NHibernate.dll</HintPath>
</Reference>
我正在尝试的一些绑定:
使用NHibernate令牌
<dependentAssembly>
<assemblyIdentity name="antlr.runtime" publicKeyToken="aa95f207798dfdb4" Culture="neutral" />
<bindingRedirect oldVersion="3.1.0.39271" newVersion="3.4.1.9004" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" Culture="neutral" />
<bindingRedirect oldVersion="3.1.0.39271" newVersion="3.4.1.9004" />
</dependentAssembly>
使用Antlr令牌(并在当时旅行)
<dependentAssembly>
<assemblyIdentity name="NHibernate" publicKeyToken="d7701e059243744f" Culture="neutral" />
<bindingRedirect oldVersion="3.4.1.9004" newVersion="3.1.1.0" />
</dependentAssembly>
我会继续寻找解决方案。
答案 0 :(得分:1)
我得到了同样的错误。我知道正确的答案已经存在,但也许它会对某人有所帮助。安装FluentNHibernate
然后安装NHibernate 5.0.0
时发生此错误。我得到了第一个NHibernate 4.0.0.4000
和第二个FluentNHibernate
。解决方案是首先删除NHibernate
和FluentNHibernate
,然后仅通过NuGet
重新安装Antlr3.Runtime
。我不确定是否应删除dependentAssembly
,但我手动删除了它。
我还从web.config
删除了 <dependentAssembly>
<assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
,因为我有一个分层应用程序。
{{1}}
之后一切正常。
答案 1 :(得分:0)
确定!我做的!尝试编辑项目文件(.csproj):
<Reference Include="Antlr3.Runtime, Version=3.4.1.9004, Culture=neutral, PublicKeyToken=eb42632606e9261f, processorArchitecture=MSIL">
<HintPath>..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll</HintPath>
<Private>True</Private>
</Reference>
在安装WebGrease和优化之前,就像这样:
<Reference Include="Antlr3.Runtime">
<HintPath>..\Dependencies\Antlr.3.1.1\lib\Antlr3.Runtime.dll</HintPath>
</Reference>
所以,我走到了过去。我修改了文件 .csproj ,然后我恢复了它#34;。仅编辑该库而不指定版本,文化,PublicKeyToken和processorArchitecture。
WebGrease和所有优化都已启动并正常运行。