问题描述
我正在尝试使用VS2019将.NET Framework 4.7.2更新为大型解决方案。此解决方案的问题之一是它是一个大型插件类型的体系结构,由于多种原因,我无法使用该解决方案提供的更新的共享库集将插件重新编译并发布到生产环境。
通常这是可以的,但是我们必须非常小心以确保完全向后的二进制兼容性。当我们最近升级到.NET 4.7.2时,我们开始在System.Linq
和MoreLinq
之间收到冲突的使用情况指示,通常是在我们通常使用的.ToHashSet()
扩展名上。该问题在MoreLinq's github
我认为纠正此问题的唯一方法是将MoreLINQs的使用隔离到我控制的单个DLL中,并且一旦所有插件都引用该DLL升级到4.7.2,即可在以下公共位置修复.ToHashSet()
调用那个时候。
有人知道有一种更好/更有效的方法来执行此操作,而无需立即重新释放所有插件吗?我不知道的某种全球重定向?
解决方法
显然这是可行的。将解决方案常见的DLLs @ 4.7.2与较旧的插件@ 4.5.2一起安装可以很好地工作,即使这些插件在Visual Studio中针对4.7.2进行编译时也会出现编译错误。
我很想知道什么内部因素使这一成功得以实现。系统是否为正在运行的进程加载多个版本的.NET Framework DLL?