c# - 在 .NET Core 3.0 中加载 exe 时出现错误的 IL 格式

标签 c# wpf .net-core

我有两个 .NET Core 3.0 WPF 项目。其中之一,我发布到一个名为“DefaultPlugin.exe”的可执行文件中。

在我的第二个 WPF 项目中,我尝试使用 Assembly.Load 加载第一个项目并读取类型。但是,当我这样做时,我从 System.Private.CoreLib 收到一个异常“错误的 IL 格式”。当我从 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 程序集,而是 native 主机可执行文件,它在加载具有 .dll 扩展名的实际 IL 应用程序程序集之前查找并启动运行时。

您应该能够通过加载具有相同项目名称的 .exe 文件旁边的 .dll 文件来加载您的插件。

关于c# - 在 .NET Core 3.0 中加载 exe 时出现错误的 IL 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58290286/

相关文章:

c# - 为什么我在 Datagrid 中已经有了 Columnheader?

wpf - 组合框中的整数不会数据绑定(bind)

.net - AssemblyLoadContext 和 Assembly.LoadFrom(路径)

c# - 为什么允许我们在条件运算符的 else 子句中使用由 "is"表达式定义的参数?

c# - 使用指定的用户名和密码运行 mstsc.exe

c# - 从自定义模型 Binder 返回 403

c# - 到处查找枚举转换为字符串

c# - 从文本文件中删除一行

c# - 如何填充 DockPanel?

asp.net-web-api - 如何在ConfigureServices方法中获取IOptions或将IOptions传递到扩展方法中?