C# asp.net 支持一个dll的多个版本

标签 c# asp.net dll antlr

我有以下 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/文件夹中]

毫不奇怪,这两个版本的 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/

相关文章:

c# - UWP AcrylicBrush 向后兼容最低版本 14393(周年更新)

javascript - 在应用程序之间移动时显示进度指示器

java - 依赖于 dll 的可执行 Jar

c# - ASP.NET MVC 网格显示解决方案

c# - Linq 根据对象属性从列表中选择对象

c# - 为什么我的 ReSharper 修改后的 form.Show() 代码不起作用?

asp.net - 将通配符 SSL 子域与 Windows Azure ASP.NET 应用程序结合使用

c# - 如何在 API Controller 的集成测试中添加请求 header

c - 在 C 中使用 DLL

c++ - 如何在 VBA/Excel 中创建一个字符串数组并将其发送到 C++ DLL 以便它可以在 DLL 中迭代