【问题标题】:Programmatically determine if .NET WinForms application launched via debugger or not以编程方式确定 .NET WinForms 应用程序是否通过调试器启动
【发布时间】:2010-09-30 15:54:42
【问题描述】:

我想知道是否有一种编程方式可以在运行时确定应用程序是通过调试器启动还是通过启动应用程序的已安装版本启动。我的应用目前正在通过 ClickOnce 部署。

当应用在调试模式和生产模式下运行时,我想更改某些设置。

我知道构建配置解决方案——我很好奇是否有一种编程方式来确定这些信息

谢谢

【问题讨论】:

标签: c# .net visual-studio debugging


【解决方案1】:

使用Debugger.IsAttached

它是System.Diagnostics 命名空间中的一个静态方法,正如您可以从名称中推断的那样,如果附加了调试器(无论它是否在 启动后附加),它将返回true。

您可以将其放在应用程序入口点 (main) 中,以了解应用程序是否在附加调试器的情况下启动,但请记住,它可以在以后附加。

【讨论】:

  • 感谢您在稍后附上的提醒,但在这种情况下,这不是问题
【解决方案2】:

如前所述,您可以使用Debugger.IsAttached。但是,请注意,这并不一定意味着应用程序是由调试器启动,它可能已正常启动,然后将调试器附加到进程(我不知道是否差异与您相关)。

【讨论】:

    【解决方案3】:

    判断它是否已在 VS 调试器中启动:

    if(System.AppDomain.CurrentDomain.DomainManager.ToString().ToLower().Contains("vshost") == true)

    【讨论】:

      【解决方案4】:

      您可以使用:Debugger.IsAttached

      Debugger 类是一个值得一看的类。它包含一些不错的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-23
        • 2010-09-17
        • 1970-01-01
        相关资源
        最近更新 更多