NET Framework 4.7.2 应用程序能否在运行时加载 NET Core 5.0 库 DLL?

Can NET Framework 4.7.2 apps load at runtime NET Core 5.0 library DLLs?

我开始将我的一些 NET Framework 4.7.2 class 库移植到 NET Core 5.0。主机框架应用动态发现 NET Core 库上的 运行s Assembly.Load ok。但是当我尝试对加载的程序集执行 Assembly.GetType(NET50Namespace.Classname) 操作时,它失败了并且 returns null 并出现错误:

{“无法加载文件或程序集 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。系统找不到指定的文件。”:“System.Runtime, Version=5.0.0.0, Culture=neutral , PublicKeyToken=b03f5f7f11d50a3a"}

看起来它正在尝试加载我已经安装的 NET Core 5.0.0.0 运行time。我用控制台命令 dotnet --list-runtimes 检查了 NETCore 和 WindowsDesktop 运行 次都安装正常:

c> dotnet --list-runtimes

Microsoft.NETCore.App 5.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 3.1.10 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.1 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

我卡住了。

Q1。 legal/possible Framework 4.7.2 应用程序动态加载和 运行 NETCore 5.0 DLL?作为第一步,我试图将我的应用程序的一小部分移植到 NET50。但它不起作用,我可能正在尝试做不可能的事情。

Q2。如果框架对 load/call NET50 DLL 没问题,我做错了什么,我怎样才能使 GetType 调用工作以便我可以实例化和调用 NET50 class 库?

谢谢。

“否”

从根本上说,这不是一个受支持的场景,并且 .NET Framework 和 .NET Core(本质上变成了 .NET 5)之间有很大的区别。

如果有帮助,.NET 4.7.2“有点像”支持 .NET Standard 2.0,.NET 5 也实现了(正确),因此如果您的库可以面向 .NET Standard 2.0,它可能是由 .NET 5 和 .NET Framework 4.7.2 应用程序加载。您还可以使用多个 TFM 多目标库,例如 net472net5.0(为了更好的衡量,也许还有一些 netstandard

但是,老实说:继续使用 .NET Framework 只会变得越来越难;如果可能的话,您应该优先考虑迁移到更新的 .NET 版本(例如撰写本文时的 .NET Core 3.1 或 .NET 5)。