2010-09-30 16 views
4

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

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

我知道了构建配置解决方案 - 我很好奇,如果有确定此信息

感谢

以编程的方式
+0

你看过http://stackoverflow.com/questions/394816/how-to-get-parent-process-in-net-in-managed-way?除了你的情况,看看父进程是否是调试器(devenv,cdb,windbg)。 – nithins 2010-09-30 16:22:34

回答

10

使用Debugger.IsAttached

这是System.Diagnostics命名空间内的静态方法,你可以从名字推断,它会返回true,如果调试器附着(是否有人后推出或者不连接)。

您可以将它放在应用程序入口点(main)中,以查明应用程序是否附带有调试器,但请记住,它可以在以后连接。

+0

感谢您在晚些时候再次加入,但在这种情况下,这不是一个问题 – cordialgerm 2010-09-30 18:02:30

4

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

1

要告诉我们,如果它已经在VS调试器已推出:

如果(。System.AppDomain.CurrentDomain.DomainManager.ToString()ToLower将()包含( “vshost”)==真)

相关问题