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

C#单元测试出现BadImageFormatException的解决方法咨询

解决单元测试中的BadImageFormatException(HRESULT 0x8007000B)问题

这个异常的核心原因是进程架构(32位/64位)与依赖的程序集/原生DLL不匹配,主程序通过调整IIS Express位数解决,但单元测试的运行环境仍存在架构冲突,可按以下步骤排查修复:

  • 统一单元测试项目与主项目的目标平台
    右键单元测试项目 → 属性 → 生成:

    1. 将「目标平台」设置为与主项目一致(比如主项目现在用x86,单元测试也设为x86)
    2. 若选择「Any CPU」,确保勾选「首选32位」(和主项目的设置保持完全一致)
  • 调整测试运行器的处理器架构
    在Visual Studio中,依次点击「测试」→「测试设置」→「默认处理器架构」,选择与目标平台匹配的选项(比如x86)。测试运行器默认可能用64位启动,即使项目设为32位,也会导致加载32位依赖失败。

  • 检查AuthenticatorFactory依赖的原生DLL/第三方库
    AuthenticatorFactory.CreateNew("VIS") 大概率依赖了特定位数的原生DLL或第三方组件:

    1. 确认这些依赖的DLL位数与当前运行架构匹配(比如主项目用32位,依赖必须是32位版本)
    2. 确保单元测试项目的输出目录中存在正确的DLL(可在项目引用中设置「复制本地」为True,或通过NuGet包自动同步)
  • 清理并重新生成解决方案
    执行「生成」→「清理解决方案」,删除所有旧的输出文件,然后重新生成主项目与单元测试项目,避免残留的不同位数DLL导致冲突。

  • 单独测试AuthenticatorFactory的创建逻辑
    在单元测试中编写单独的测试方法,直接调用AuthenticatorFactory.CreateNew("VIS"),验证是否在此处直接抛出异常,快速定位是依赖问题还是容器注册的附加逻辑问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 04:06:00