我有两个.NET Core3.0WPF项目。其中之一,我将其发布到一个名为"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 Core3.0程序集上使用Assembly.Load,或者这只是新框架的一个限制?
发布于 2019-10-09 01:36:40
在.NET Core3.0应用程序中生成的.exe文件不是一个IL程序集,而是一个本机主机可执行文件,它在加载具有.dll扩展名的实际IL应用程序集之前查找并引导运行时。
您应该能够通过加载具有相同项目名称的.exe文件旁边的.dll文件来加载您的插件。
https://stackoverflow.com/questions/58290286
复制相似问题