以编程方式确定.NET WinForms应用程序是通过调试器启动还是直接启动

6

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

当应用程序在调试模式下运行与生产模式下运行时,我希望更改某些设置。

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

谢谢


你看过https://dev59.com/HnRC5IYBdhLWcg3wJNqf吗?除非在你的情况下,看看父进程是否是调试器(devenv、cdb、windbg)。 - nithins
4个回答

11

使用Debugger.IsAttached方法。

Debugger.IsAttachedSystem.Diagnostics命名空间中的静态方法。从名称可以推断出,如果调试器已连接(无论是否在启动后连接),则此方法将返回true。

你可以将这个方法放在应用程序入口点(main),以便查明应用程序是否使用调试器启动,但请注意,它也可能会在稍后被连接。


谢谢您提醒我稍后附加文件的事项,但在这种情况下,这并不是一个问题。 - cordialgerm

4

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


1

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

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


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接