Visual Studio 2017中Edit and Continue功能异常,调试单元测试时无法编辑求助
解决VS2017中单元测试调试时Edit and Continue失效的问题
我之前在VS2017里调试单元测试时也碰到过一模一样的Edit and Continue(简称EnC)失效问题,折腾了好一阵才解决,给你几个针对性的排查步骤:
1. 检查单元测试项目的核心调试/生成设置
这是最容易忽略的点——单元测试项目的配置可能和主项目独立设置:
- 右键你的单元测试项目 → 属性
- 切换到生成标签页:确保优化代码没有被勾选(代码优化会完全阻断EnC功能)
- 切换到调试标签页:确认启用编辑并继续已经勾选
- 同时确认当前配置是Debug而非Release(Release模式下EnC默认不可用)
2. 验证Test Explorer的调试会话配置
Test Explorer的默认调试规则可能会覆盖项目级设置:
- 打开Test Explorer,找到目标测试方法,右键选择调试 → 设置
- 在弹出的调试配置窗口中,确保启用编辑并继续选项处于勾选状态
- 如果是批量调试测试,点击Test Explorer右上角的齿轮图标,检查是否存在禁用EnC的全局设置
3. 清理缓存并重启VS
VS的临时缓存文件偶尔会导致EnC功能异常:
- 点击顶部菜单栏的生成 → 清理解决方案
- 完全关闭VS,找到解决方案根目录下的隐藏文件夹
.vs并删除(该文件夹存放VS的临时配置与缓存) - 重新打开VS,重新生成整个解决方案后再尝试调试测试
4. 排查隐性的EnC限制场景
如果以上步骤无效,再检查这些容易忽略的细节:
- 确认你修改的代码不在静态构造函数、异步方法的await块或动态生成的代码中(这些场景下EnC本身不支持,不过你改的是普通整数赋值,大概率不涉及,但仍需确认)
- 打开工具 → 选项 → 调试 → 编辑并继续:确保未勾选禁止在模块加载后更改代码等限制选项
- 调试时查看输出窗口(切换到调试分类),如果有EnC相关的错误提示,可根据提示进一步排查(比如某模块被优化加载)
5. 确保调试会话仅附加目标进程
单元测试调试有时会同时附加测试运行器进程(如vstest.executionengine.exe),导致EnC失效:
- 断点触发后,点击调试 → 附加到进程,确认仅你的单元测试项目进程被附加,而非测试运行器进程
- 或右键单个测试方法,选择仅调试此测试,避免同时启动多个测试进程
内容的提问来源于stack exchange,提问作者Catherine McDowell
相关产品推荐
相关产品推荐

