Visual Studio 调试运行 忽略步进和断点并无限期执行

Visual Studio debugging run ignores stepping and breakpoints and executes indefinitely

我在 Visual Studio 2017 年一直在努力解决一个奇怪的问题,但在任何地方都找不到有关它的任何信息。

我目前正在将大型遗留应用程序从 .NET 3.5 重构和升级到 .NET 4.6.1。它在 .NET 3.5 中完美执行,但在没有调试器的情况下使用 .NET 4.0 或更新版本作为目标框架执行时会抛出错误。

为了调试它,我 运行 通过 Visual Studio 程序处于调试模式。在调试模式下 运行ning 时,在达到某个 class 后步进和断点将被忽略,尽管诊断工具显示程序 activity.

Diagnostic Tool

如果不调用有问题的 class,即称为 MainMenuForm(具有太多职责),问题就会消失。无论我是在非静态 MainMenuForm class 中调用静态字段还是调用构造函数都没有关系。

我怀疑问题与 JIT 编译器发现一些奇怪的东西有关,但预计会抛出异常或某种错误。

有没有人在升级到较新版本时遇到过类似的问题?

我找到了解决方案。根据 Snympi 和 JGH 的意见,我开始研究问题 class 的依赖关系。事实证明,它具有遗留的 DirectX 依赖项,显然 CLR 4.0 对其进行了不同的处理。

这个 post 的答案解决了这个问题: Managed DirectX running from .Net Framework 4.0 app dont hunt

将以下内容添加到 App.config 使调试器能够单步执行程序。

<startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0"/> </startup>