我开始将一些NET Framework 4.7.2类库移植到NET Core 5.0。主机Framework应用程序可以动态发现并Assembly.Load
在NET Core库上运行。但是,当我尝试Assembly.GetType(NET50Namespace.Classname)
对已加载的程序集进行操作时,它失败并返回null并显示错误:
{“无法加载文件或程序集'System.Runtime,版本= 5.0.0.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。系统找不到指定的文件。“:” System.Runtime,版本= 5.0.0.0,文化=中性,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类库?
谢谢。
“没有”
从根本上讲,这不是受支持的方案,.NET Framework和.NET Core(本质上是.NET 5)之间存在硬性中断。
如果有帮助,.NET 4.7.2“基本上有点”支持.NET Standard 2.0,.NET 5也可以实现(正确)。因此,如果您的库可以定位.NET Standard 2.0,则可能会同时由.NET标准2.0加载。 NET 5和.NET Framework 4.7.2应用程序。您还可以使用多个TFM对库进行多目标定位,例如net472
和net5.0
(也许也可以使用多个TFM netstandard
)
但是,老实说:继续使用.NET Framework只会越来越困难。如果可能的话,您应该优先考虑改用较新的.NET版本(在撰写本文时,优先选择.NET Core 3.1或.NET 5)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句