【问题标题】:.NET Framework 4.7.2 with MoreLINQ.NET Framework 4.7.2 和 MoreLINQ
【发布时间】:2020-10-05 12:17:26
【问题描述】:

我正在尝试使用 VS2019 将大型解决方案更新到 .NET Framework 4.7.2。此解决方案的一个问题是它是一个大型插件类型架构,其中(出于多种原因)我无法使用该解决方案提供的更新的共享库集重新编译插件并将其发布到生产环境。

通常这是可以的,但我们必须非常小心以确保完全向后二进制兼容性。当我们最近升级到 .NET 4.7.2 时,我们开始在 System.LinqMoreLinq 之间获得冲突的使用指标,通常在我们常用的 .ToHashSet() 扩展上。这个问题在MoreLinq's github上有所概述

我认为纠正这个问题的唯一方法是将 MoreLINQs 的使用隔离到我控制的单个 DLL 中,一旦所有插件引用该 DLL 升级到 4.7.2,修复当时公共位置中的 .ToHashSet() 调用.

有没有人知道更好/更有效的方法来做到这一点,而无需一次重新发布所有插件?某种我不知道的全局重定向?

【问题讨论】:

  • @jdweng 我认为这是一个共享 DLL - 一个“核心”DLL,而不是 .NET Core DLL。特别是考虑到 4.7.2 的反复提及。
  • 是的,我将那里的核心改成“共享应用程序库”

标签: c# .net-4.7.2 morelinq


【解决方案1】:

显然这很有效。将解决方案公用 DLL @ 4.7.2 与旧插件 @ 4.5.2 一起安装效果很好,即使这些插件在 Visual Studio 中针对 4.7.2 进行编译时出现编译错误。

我很想知道是什么内部因素使这个成功。系统是否为正在运行的进程加载了多个版本的 .NET 框架 DLL?

【讨论】:

  • 简短的回答是编译时间就是编译时间,运行时间就是运行时间。在编译时,它决定调用哪个ToHashSet 方法——以后添加一个新方法不会影响编译后的代码——它已经决定调用哪个。
猜你喜欢
  • 2022-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 2021-12-25
  • 2020-02-08
  • 2019-07-06
相关资源
最近更新 更多