Ove*_*urg 5 .net c# debugging f#
System.Diagnostics.Debugger.Break(); // this DB call has not been mocked
Run Code Online (Sandbox Code Playgroud)
我想将它们放在 I/O 调用站点的代码中,以便让单元测试开发人员知道他们何时没有正确模拟调用,但我不想产生新问题。
编译为 Release 时,调用 Debugger.Break() 是否有任何影响?
执行调试构建但不调试时有什么影响吗?
小智 5
不幸的是,对于您的用例来说,确实如此。
为了解决您的疑虑:
蒂姆·施梅尔特提出了一个很好的建议。如果您想将 Debugger.Break 限制为仅调试版本,那么您可以使用Conditional Compilation。
#if DEBUG
Debugger.Break();
#endif
Run Code Online (Sandbox Code Playgroud)
如果没有附加调试器,那么它将尝试附加调试器,或者根据您所针对的 .Net Framework 版本向 Windows 错误报告 (WER) 子系统发送消息。
如果未附加调试器,系统会询问用户是否要附加调试器。
...
从 .NET Framework 4 开始,运行时不再对 Break 方法的调试器启动进行严格控制,而是向 Windows 错误报告 (WER) 子系统报告错误。