【问题标题】:.NET 5 Project not really working with old 3rd Party .NET Framework 2.x/4.x assemblies.NET 5 项目不能真正使用旧的第 3 方 .NET Framework 2.x/4.x 程序集
【发布时间】:2021-05-06 13:42:13
【问题描述】:

我目前正在处理一个新的 C# .NET 5 Blazor 项目。当我们从 .NET 4 框架(使用旧代码的新项目)“升级”我们的应用程序时,我目前遇到了一个问题,我找不到任何解决方案。

问题: 我使用第 3 方程序集编写代码。这个具有最新版本的第 3 方程序集以 .NET 4.8 为目标。现在这个第 3 方程序集由于访问 .NET 5 框架 (AppDomain.CurrentDomain.SetupInformation.ConfigurationFile) 中不再存在的 AppDomain 部分而引发异常。由于微软删除或更改了 AppDomain 现在在 .NET 5 中的使用方式。

现在我的问题是。有没有办法让第 3 方程序集仍然加载它的目标并使用 .NET Framework 4.8 而不是主要项目 .NET 5 Framework?尽管我仍然可以使用它(不应抛出异常,因为 .NET 4.x 中存在 AppDomain 代码),而无需等待公司调整程序集以支持 .NET 5?

我尝试使用“AssemblyLoadContext”,但直到现在都没有成功。

感谢您提供任何信息或帮助! 保持安全!

【问题讨论】:

  • 没有.NET 5 Framework。 .NET 5 是 .NET Core 5。您根本不能使用 .NET 旧程序​​集。至于 .NET Framework 2.0,它甚至与 .NET Framework 4 的运行时都不同。在 .NET 4 中使用 .NET 2.0 程序集存在兼容性问题
  • 这取决于第 3 方程序集。如果您有源代码,您可以使用 .NET Core 进行编译,并可能进行修改。
  • 嗨,不,我只有已编译的程序集,但我无法将其重新编译为目标 .NET Core。好的,这就是我已经认为它实际上不会起作用的。感谢您的输入!
  • 新版本的Net是独立的,您只需要安装一个版本的Net。较旧版本的 Net,如 4.0,您需要安装 Net 1.0、2.0、3.0、3.5 和 4.0。如果您的项目仍然引用旧版本的 Net,那么您必须使用新版本的 Net(干净构建)重建或安装旧版本的 Net。

标签: c# .net .net-5 .net-4.8


【解决方案1】:

除非另有说明,.Net 的新主要版本应假定与旧版本不兼容。不过,这条规则似乎有不少例外。

  • .Net 4 通常可以很好地加载 .Net 3.x 程序集
  • .Net 5 据我所知大部分向后兼容 .Net core 3

从 .Net framework 4.8 到 .Net core 和 .Net 5 的变化非常显着。虽然为了顺利过渡已经做了大量工作,但有一些功能已经从 .Net 5 中简单地删除了:

有些技术将保持特定于 .NET Framework,例如 AppDomains、Remoting 等、WCF Server 和 WWF。

来源:.net 5 backward compatiblity with .net framework?

解决方案应该是将任何第三方库更新到针对 .net 标准、.net 核心或 .Net 5 的版本。大多数流行的库似乎已经更新了。

如果无法做到这一点,您可能需要考虑礼貌地请求作者更新库,或者自己更新库以防它们是开源的。

作为最后的手段,您可能希望将库替换为支持最新 .Net 版本的其他库。

【讨论】:

  • 嘿,伙计,您的回复!正如你已经提到的,例如AppDomain 不再像以前那样存在于旧版本中。由于第 3 方大会不提供任何源代码,我只能降级我的项目或希望他们更新他们的大会以支持 .NET 5。再次感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
相关资源
最近更新 更多