Visual Studio 2015调试Web项目时32位IIS Express异常求助
我之前也碰到过一模一样的坑,明明改了常见的设置还是报Bad Image Format Exception,后来排查出几个容易被忽略的点,你可以按顺序试试下面这些方案:
确认解决方案级别的平台配置
很多人只改了单个项目的平台目标,但解决方案的活动配置还是x64。右键你的解决方案 → 属性 → 配置属性,确保活动解决方案平台是x86,并且所有关联项目的“平台”也都设置为x86,别漏了任何一个依赖项目。手动修改IIS Express的applicationhost.config
VS的可视化设置有时候没同步到IIS Express的核心配置文件里。这个文件默认在%USERPROFILE%\Documents\IISExpress\config\applicationhost.config,用文本编辑器打开后,找到你的站点对应的应用池节点,确保添加或设置enable32BitAppOnWin64="true"。举个例子:<applicationPools> <add name="YourProjectAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" enable32BitAppOnWin64="true" /> </applicationPools>注意要找对和你项目匹配的应用池名称,别改到其他站点的配置上。
彻底清理残留编译文件后重新生成
旧的x64编译产物可能偷偷留在bin/obj文件夹里,干扰调试。先手动删除项目根目录下的bin和obj文件夹,然后在VS里点击「生成 → 清理解决方案」,最后重新生成整个解决方案。检查项目调试属性的服务器设置
右键你的Web项目 → 属性 → 调试,确认「使用IIS Express」是勾选状态。如果还是不行,可以先临时切换到「本地IIS」调试(需要先在IIS里部署),测试正常后再切回IIS Express,这一步有时候能重置VS的调试配置。验证目标DLL的实际位数
虽然你说它是32位DLL,但保险起见可以用工具确认:打开VS的开发者命令提示符,执行dumpbin /headers Your32Bit.dll,看输出里的「machine」字段,如果显示x86就是32位,要是x64那就是拿错DLL了。检查项目配置文件的硬编码设置
有时候VS的GUI设置没正确写入项目文件,你可以手动打开.csproj(或.vbproj)文件,搜索<PlatformTarget>节点,确保所有配置(Debug/Release)下的这个节点值都是<PlatformTarget>x86</PlatformTarget>,而不是AnyCPU或x64。
内容的提问来源于stack exchange,提问作者Marwan Tushyeh

