【发布时间】:2018-01-05 17:31:10
【问题描述】:
从 Visual Studio 2013 更新到 Visual Studio 2017 后,如果我尝试启动 C++/CLI 项目(.vcxproj 项目文件)的调试会话,Visual Studio 会停止并显示一个对话框,其中显示:
您正在调试 Foo.exe 的发布版本。将 Just My Code 与使用编译器优化的 Release 构建一起使用会导致调试体验下降(例如,不会命中断点)。
然后我可以停止调试或继续调试会话,可以打开或关闭“仅我的代码”。
该项目显然是使用调试信息构建的,没有任何优化。因此,旧的 Visual Studio 2013 没有显示任何警告。
this SO question 和 this SO question 都处理 Visual Studio 2015 发出的相同警告,但在阅读了那里提供的建议和提示后,我不得不说它们似乎都不是我的问题的令人信服的解决方案。具体来说,我能够通过启用 Visual Studio 选项“在模块加载时抑制 JIT 优化(仅限托管)”来消除警告,但我认为这只是治疗症状,而不是修复问题的实际原因。
我必须做些什么才能让 Visual Studio 2017 检测到我的 C++/CLI 项目是调试版本,以便它不再显示烦人的(实际上是误导性的)警告?
环境:
- Visual Studio 2017 版本 15.5.2
- Visual Studio 选项“仅我的代码”已启用
- Visual Studio 选项“在模块加载时抑制 JIT 优化(仅限托管)”已禁用
- 项目是使用 CLR 支持(编译器选项
/CLR)、调试信息(链接器选项/DEBUG)和无优化(编译器选项/Od)构建的本机项目(.vcxproj 项目文件)
【问题讨论】:
-
VS2017 15.5.x 是一个非常糟糕的错误包,但他们也打破了这一点有点牵强。只需确保您启用了任何 C++/CLI 代码所需的旧版调试引擎。工具 > 选项 > 调试 > 常规,必须勾选“使用托管兼容模式”。
标签: visual-studio visual-studio-2017 c++-cli