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

如何解决C#单元测试中程序集加载的System.BadImageFormatException问题

解决C#单元测试中同时加载x64/x86程序集引发的System.BadImageFormatException异常

.NET运行时进程只能以单一CPU架构(x64或x86)运行,没法在同一个测试进程里同时加载不同位数的程序集,这就是你碰到System.BadImageFormatException的核心原因。下面是几种可行的解决办法:

  • 拆分测试项目
    给依赖x64和x86程序集的代码分别建独立的单元测试项目,各自设置对应平台目标:

    1. 右键测试项目→属性→生成→平台目标,选择x64或x86
    2. 保证测试项目的平台目标和它依赖的程序集位数完全匹配
  • 用条件编译或适配器切换架构
    要是不想拆分项目,能在测试代码里通过条件编译指令区分不同架构的测试逻辑,或者借助测试框架的适配器配置:

    1. 在测试项目属性里开启条件编译符号,比如X64_TEST或X86_TEST
    2. 写测试代码时用#if指令隔离不同架构的测试:
      #if X64_TEST
      [Fact]
      public void TestX64Assembly()
      {
          // 测试依赖x64程序集的逻辑
      }
      #endif
      
      #if X86_TEST
      [Fact]
      public void TestX86Assembly()
      {
          // 测试依赖x86程序集的逻辑
      }
      #endif
      
    3. 运行测试时,分别切换测试项目的平台目标执行对应测试
  • 检查测试运行器的架构设置
    像Visual Studio测试资源管理器这类工具默认可能用AnyCPU运行,得强制指定架构:

    1. 在Visual Studio里,点击测试→测试设置→处理器架构,选择x64或x86
    2. 确保测试运行器的架构和当前要执行的测试依赖的程序集位数一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:25:20