我有以下 dll hell :
- 一个 ASP.Net 项目
- 引用 WebGrease
- 引用 Antlr3.Runtime.dll 3.3.1.7705 [存储在 asp.net 应用程序的/bin/文件夹中]
- 引用定制项目
- 引用了 NCalc.codeplex.com
- 引用 Antlr3.Runtime.dll 3.1.3.22795 [存储在 asp.net 应用程序的/bin/CustomProject/文件夹中]
- 引用了 NCalc.codeplex.com
- 引用 WebGrease
毫不奇怪,这两个版本的 Antlr 不能很好地协同工作,我得到“定位的程序集的 list 定义与程序集引用不匹配”错误
我不愿意修改WebGrease项目。
我正在尝试将 NCalc 项目升级为使用 3.3.1.7705,但是我正在努力解决 this
对于如何让这两个 DLL 协同工作,您有什么建议吗?
编辑 不幸的是,NCalc 代码与较新版本的 antlr 不兼容,所以我无法使用绑定(bind)重定向
谢谢
最佳答案
提供 NCalc 可以使用更高版本的 Antlr3.Runtime - 即没有重大更改,您应该能够使用绑定(bind)重定向来引导它加载更高版本
例如在 web.config 文件中 ass 之类的东西
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="NCalc" publicKeyToken="xxxxxxxxx" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.3.0" newVersion="3.3.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
我不认为版本上的第 4 位数字被使用
关于C# asp.net 支持一个dll的多个版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17366942/