【问题标题】:In VS, is there a pre-processor directive that differentiates F5 vs. Ctrl + F5? [duplicate]在 VS 中,是否有区分 F5 与 Ctrl + F5 的预处理器指令? [复制]
【发布时间】:2020-08-06 15:50:44
【问题描述】:

在 Visual Studio 中,是否有预处理器指令可以区分使用 F5 和 Ctrl + F5 运行应用程序?我知道使用“#if DEBUG”检测 DEBUG 与 RELEASE,但我希望检测执行模式(F5 或 Ctrl + F5)。

【问题讨论】:

  • 我不知道事实,但如果有的话我会感到非常惊讶
  • 可能没有预处理器(因为它是运行时变量,不是你在编译时知道的),但你确实有 System.Diagnostics.Debugger.IsAttached
  • 你想要完成什么,我的意思是你为什么需要检测这两个?

标签: c# visual-studio


【解决方案1】:

不,没有预处理器指令可以区分启动可执行文件的“运行”(Ctrl+f5) 和“调试”(F5) 模式。完全相同的可执行文件可以两种方式启动,包括同时运行两种方式。

取决于您的需要和设置:

  • 查看是否附加了调试器 (Is there a way to detect if a debugger is attached to another process from C#?)。这种方法的限制是调试器可能会在初始启动之后附加,但可能在您自己的代码开始之前。它还会检测任何调试器,而不仅仅是您编译代码的 VS 实例。
  • 尝试检测代码是否在没有优化的情况下进行了 JIT(您需要研究如何执行此操作)。如果在 VS 中关闭“在程序集加载时抑制优化”选项,这将不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    相关资源
    最近更新 更多