我正在将一些NET Framework 4.7.2类库迁移到NET Core 5.0。主机框架应用程序可以动态发现并运行 NET Core 库上的 "Assembly.Load",但是当我尝试在已加载的程序集上执行 "Assembly.GetType(NET50Namespace.Classname)" 操作时,它会失败并返回 null,并显示错误信息如下:
{"Could not load file or assembly 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.":"System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}
看起来它似乎正在尝试加载NET Core 5.0.0.0运行时,而我已经安装了它。我使用控制台命令 "dotnet -list-runtimes" 进行了检查,NETCore和WindowsDesktop运行时都已成功安装。
{"Could not load file or assembly 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.":"System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}
看起来它似乎正在尝试加载NET Core 5.0.0.0运行时,而我已经安装了它。我使用控制台命令 "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. Framework 4.7.2应用程序是否可以动态加载和运行NETCore 5.0 DLL,这合法/可能吗?我尝试将我的应用程序的一小部分移植到NET50作为第一步。但是它并不起作用,我可能在试图做不可能的事情。
Q2. 如果Framework可以加载/调用NET50 DLL,我做错了什么,我如何使GetType
调用工作,以便我可以实例化和调用NET50类库?
谢谢。