You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#反射加载程序集报BadImageFormatException错误的原因与解决方法

问题原因

该System.BadImageFormatException和代码语法、文件路径无关,本质是.NET 6(.NET Core/.NET 5+)与传统.NET Framework的编译输出结构差异导致:

  • .NET Framework生成的.exe本身是包含IL代码的托管程序集,可直接通过Assembly.LoadFrom加载
  • .NET 6默认编译输出的.exe是原生apphost启动器,属于非托管PE文件,仅负责查找本机.NET运行时、加载同目录同名.dll托管程序集后执行入口,本身不包含任何IL代码。运行时尝试从这个原生文件中读取IL结构时自然会报格式无效错误。
    你代码里加载的console-custom.exe就是这个原生启动器,不属于可被反射加载的托管程序集。
修复方案

直接修改加载路径,指向同目录下真正存储IL代码的同名托管dll即可:

// 替换原exe路径,加载托管dll程序集
Assembly a = Assembly.LoadFrom("C:\\Users\\bobmarley\\desktop\\temp\\csharp-reflection\\get-type-from-assembly\\bin\\Debug\\net6.0\\console-custom.dll");

同类异常的其他常见触发场景:

  • 进程架构与待加载程序集架构不匹配(如x86进程加载纯x64编译的程序集,或反向加载)
  • 尝试加载非托管C/C++等原生编译的DLL/EXE
  • 待加载文件损坏、不符合标准PE格式

内容的提问来源于stack exchange,提问作者user32882

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 23:33:30