Visual Studio 2022调试C#时启动未修改旧版本程序如何解决
Visual Studio 2022调试C#始终运行旧版本代码修复方案
按以下优先级操作,大部分情况前几步就能解决:
基础配置排查
- 右键解决方案打开「配置管理器」,确认两个核心配置:一是当前激活的解决方案配置是
Debug而非自定义的特殊配置,二是启动项目、以及该项目依赖的所有同解决方案类库项目,「生成」列的勾选框全部处于选中状态——这是最高发的问题,很多人不小心取消勾选后,VS会直接跳过对应项目的编译步骤,永远调用历史生成的旧文件。 - 打开VS设置路径:工具 -> 选项 -> 项目和解决方案 -> 生成并运行,把「当项目过期时」的下拉选项改为始终生成,同时取消勾选*「在运行时仅生成启动项目和依赖项」*,避免VS的增量编译优化跳过存在代码变更的项目生成步骤。
清理旧编译缓存
- 先在VS内右键解决方案,选择「清理解决方案」,完成后再单独右键启动项目执行一次清理操作。
- 完全关闭Visual Studio,打开项目所在根目录,把所有项目(包括被引用的类库项目,不要只删启动项目)下的
bin、obj两个文件夹全部删除,这两个文件夹存储的全是编译中间产物和输出文件,删除不会影响源代码。 - 如果安装了ReSharper、OzCode这类带独立增量编译功能的第三方插件,先临时禁用插件再重试,部分版本的插件编译缓存逻辑存在bug,会导致新代码不被纳入编译流程。
进阶配置校验
- 右键启动项目打开「属性」面板,切到「生成」标签页,检查输出路径是否为默认的
bin\Debug\对应目标框架版本\路径,如果之前手动改到过其他位置,调试器大概率加载了错误路径下的旧程序。 - 进入调试设置路径:工具 -> 选项 -> 调试 -> 常规,临时取消勾选*「启用编辑并继续」*,部分VS2022的小版本更新后,这个功能和增量编译存在兼容问题,会导致调试时加载旧版本程序集。
- 检查项目引用关系:展开启动项目的依赖项列表,如果同解决方案下的类库是通过直接浏览dll文件的方式引用,而非「项目引用」,VS不会在调试前自动编译这些类库的最新代码,永远会加载当初引用路径下的旧dll,改成项目引用即可。
极端问题处理
- 关闭VS,删除解决方案根目录下的隐藏文件夹
.vs,这个文件夹存储了VS本地的用户配置、调试临时文件、IntelliSense缓存,删除后不会损坏代码,下次打开解决方案时VS会自动重建全新的缓存。 - 检查项目所在目录:如果项目放在OneDrive、坚果云这类实时同步盘里,或者被杀毒软件的实时防护扫描,可能出现编译生成的新dll被同步进程/杀毒软件锁定,VS无法写入新文件的情况,把项目目录加到同步盘、杀毒软件的白名单即可。
- 如果以上操作都无效,打开Visual Studio 2022的开发者命令提示符,cd到解决方案所在目录,执行
msbuild 你的解决方案文件名.sln /t:Rebuild /p:Configuration=Debug强制全量重编译,观察编译输出日志,如果出现文件占用、权限不足的报错,对应杀掉占用进程、给文件夹开放当前用户的完全控制权限即可。
内容的提问来源于stack exchange,提问作者Antoisse
相关产品推荐
相关产品推荐

