【问题标题】:C# asp.net Supporting multiple versions of a dllC# asp.net 支持多个版本的 dll
【发布时间】:2013-06-28 14:23:06
【问题描述】:

我有以下 dll 地狱:

  • 一个 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 不能很好地协同工作,我得到“定位的程序集的清单定义与程序集引用不匹配”错误

我不愿意修改 WebGrease 项目。

我正在尝试升级 NCalc 项目以使用 3.3.1.7705,但是我正在努力解决 this

您对如何让这两个 DLL 一起工作有什么建议吗?

编辑不幸的是,NCalc 代码与新版本的 antlr 不兼容,所以我不能使用绑定重定向

谢谢

【问题讨论】:

  • 您需要使用绑定重定向。
  • @SLaks 链接请。注意这两个版本的 Antlr.Runtime.dll 互不兼容。

标签: c# asp.net dll antlr


【解决方案1】:

提供 NCalc 可以使用更高版本的 Antlr3.Runtime - 即没有重大更改,您应该能够使用绑定重定向来引导它加载更高版本

例如在 web.config 文件中的类似

<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 位

【讨论】:

  • "提供 NCalc 可以使用更高版本的 Antlr3.Runtime" 不幸的是它不能:-[
  • 最后我找到了一种升级 NCalc 以使用 3.1.0 dll 运行的方法,然后使用绑定升级最后两个没有重大更改的版本
  • @GreyCloud 我也有同样的问题。你是怎么修的?可以发个链接之类的吗?
  • @RaraituL 抱歉,我仍在使用我之前评论中的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-22
  • 1970-01-01
  • 2018-01-15
  • 1970-01-01
  • 2012-09-24
  • 1970-01-01
  • 2021-07-22
相关资源
最近更新 更多