我正在将一个. Net Framework项目移植到. Net 8,遇到了一个与Asseming.LoadFrom()有关的问题.加载的程序集用于列出依赖项及其版本.

. Net总是创建一个exe文件和一个dll文件(例如MyProgram.exe和MyProgram.dll)

加载exe失败,出现"错误的IL格式.文件的格式"…"无效."

var myAssembly = Assembly.LoadFrom(@"C:\Test\MyProgram.exe");

加载其相应的dll工作正常

var myAssembly = Assembly.LoadFrom(@"C:\Test\MyProgram.dll");

Assuming that the exe is just a loader for the dll it can't have a different IL format.
Please correct me if I'm wrong with that. Might be a lack of understanding...

推荐答案

假设exe只是DLL的加载器,它不可能有不同的IL格式.

exe文件是本地文件.通常它根本没有IL格式,只有本地代码和一些附加数据.

原生格式非常灵活,可以在原生代码旁边放入任意数据.包括dls.而旧的. net框架正是这样做的.但是新的. net默认情况下并不这样做.它为相应的dll文件创建一个本地小加载程序.所以它将加载程序与编译的字节码分开.

你可以通过single-file deployment启用exe和dll的合并,但我不确定Assembly.LoadFrom是否可以使用它,我没有测试过.

无论如何,如果你有一个与dll旁边的脚本,然后只需加载dll.

Csharp相关问答推荐

发布.NET框架项目将.NET核心元素注入到web. connect中

在C#中使用in修饰符

. NET 8控制台应用程序DI错误无法解析Microsoft. Extension. Logging. ILoggerFactory类型的服务'''

返回TyedResults.BadRequest<;字符串>;时问题详细信息不起作用

mocking对象的引发事件并作为用于调用方法的参数对象传递到那里

Take()方法如何与IAsyncEnumerable一起使用

在静态模式下实例化配置

try 使用C#ASP.NET收集WMI信息时访问被拒绝,但在PowerShell中工作

将字节转换为 struct 并返回

集合表达式没有目标类型

使用带有参数和曲面的注入失败(&Q;)

用于管理System.Text.Json中的多态反序列化的自定义TypeInfoResolver

当试图限制EF Select 的列时,如何避免重复代码?

BFF到具有AAD/Entra ID B2C的内部API(.NET/ASP.NET核心/标识.Web)

Xamarin.Forms-如何创建可 Select 的显示alert 或弹出窗口?

在.NET Maui中,Flyoutindow/Hamburger菜单可以在shell 之外实现吗?

项目参考和方法签名问题

在Visual Studio 2022中查找Xamarin模板时遇到问题

如何对正方形格线进行对角分组

使用Try-Catch-Finally为API端点处理代码--有什么缺点?