我有两个 .NET Core 3.0 WPF 项目。其中之一,我发布到一个名为“DefaultPlugin.exe”的可执行文件中。
在我的第二个 WPF 项目中,我尝试使用 Assembly.Load 加载第一个项目并读取类型。但是,当我这样做时,我从 System.Private.CoreLib 收到一个异常“Bad IL Format”。当我从 bin 文件夹加载 DefaultPlugin.dll 时它可以工作,我还检查了我的 CPU 配置以确保它们匹配。
///Works:
string path = @"C:\Users\S-D81\source\repos\DefaultPlugin\DefaultPlugin\bin\Debug\netcoreapp3.0\win-x64\DefaultPlugin.dll";
///Does not work:
//string path = @"C:\Users\S-D81\source\repos\DefaultPlugin\DefaultPlugin\bin\Debug\netcoreapp3.0\win-x64\DefaultPlugin.exe";
//string path = @"C:\Users\S-D81\source\repos\DefaultPlugin\DefaultPlugin\bin\Release\netcoreapp3.0\win-x64\publish\DefaultPlugin.exe";
Assembly assembly = Assembly.LoadFrom(path);
有没有办法在已发布的 .NET Core 3.0 程序集上使用 Assembly.Load 或者这只是新框架的限制?
.NET Core 3.0 应用程序中生成的 .exe 文件不是 IL 程序集,而是本机主机可执行文件,它在加载具有 .dll 扩展名的实际 IL 应用程序程序集之前查找并启动运行时。
您应该能够通过加载具有相同项目名称的 .exe 文件旁边的 .dll 文件来加载插件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)