【发布时间】: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。