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

使用GitHub Desktop回退提交后,VS2022调试.NET4.7.2项目持续出现System.BadImageFormatException异常

使用GitHub Desktop回退提交后,VS2022调试.NET4.7.2项目持续出现System.BadImageFormatException异常

看起来你碰到的这个问题是Costura(就是Fody生态里用来把依赖打包进主程序集的插件)引发的类型重复冲突,而且和GitHub Desktop回退提交后本地编译缓存、项目状态紊乱脱不了干系——VS修复只是临时清了某些缓存,但没解决根因。下面给你几个针对性的解决方案,比每次折腾VS安装器高效多了:

  • 彻底清理项目编译缓存与输出目录
    先把Visual Studio完全关掉,然后手动删掉项目根目录下的bin和obj文件夹(这俩是编译生成的输出和中间文件,回退提交后很可能残留了旧版本的重复类型文件)。重新打开VS,选择「生成解决方案」而非「生成项目」,再尝试调试。

  • 检查Costura的NuGet包与配置
    你的项目应该是用了Costura.Fody这个NuGet包对吧?回退提交可能导致包版本不一致或者配置重复:

    1. 打开NuGet包管理器,先卸载Costura.Fody,再重新安装对应版本(要是项目确实需要它的话);
    2. 检查项目里的FodyWeavers.xml文件,确保里面没有重复的<Costura />配置节点。
  • 清理Visual Studio的本地缓存
    VS的用户级缓存有时候会残留旧的编译信息,哪怕项目文件更新了也会捣乱:

    1. 关闭所有VS窗口,打开命令提示符,执行devenv /cleanuserprofile;
    2. 或者手动删除%LOCALAPPDATA%\Microsoft\VisualStudio\17.0_xxxx\ComponentModelCache文件夹(17.0对应VS2022,后面的xxxx是你的VS实例ID,直接找ComponentModelCache文件夹即可)。
  • 清理Git本地未跟踪文件
    回退提交后,本地可能残留了一些未被Git跟踪的旧编译产物(比如bin/obj里的文件,哪怕.gitignore忽略了也可能没清干净):

    1. 打开项目目录的Git Bash(或终端),先确认没有需要保留的未跟踪文件,然后执行git clean -xdf;
    2. 执行完后重新编译项目,再尝试调试。

如果上面的方法都不管用,那你可以打开项目的.csproj文件,搜索Costura或者AssemblyLoader相关的节点,看看有没有重复的引用或导入项,手动删掉重复的部分就行。

备注:内容来源于stack exchange,提问作者vdmua

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 13:33:07