Programmatically determine if .NET WinForms application launched via debugger or not
I would like to know if there is a programmatic way of determining at run-time if the application was launched via the debugger or by launching an installed version of the application. My app is currently being deployed via ClickOnce.
There are certain settings I would like to alter when the app is run in debug mode vs production mode.
I am aware of the 开发者_运维问答build configurations solution -- I am curious if there is a programmatic way to determine this information
Thanks
Use Debugger.IsAttached
.
It is a static method within the System.Diagnostics
namespace, as you can deduce from the name, it will return true if the debugger is attached (whether it was attached after launch or not).
You can put this in the application entry point (main
) in order to find out if the application was lauched with a debugger attached, but keep in mind that it can be attached at a later time.
As mentioned, you can use Debugger.IsAttached. However, be aware that this doesn't necessarily mean that the application was launched by the debugger, it may have been launched normally and then a debugger was attached to the process (I don't know if the difference is relevant for you).
To tell if it has been launched in the VS Debugger:
if(System.AppDomain.CurrentDomain.DomainManager.ToString().ToLower().Contains("vshost") == true)
You can use: Debugger.IsAttached
The Debugger class is a class worth looking at. It contains some nice goodies.
精彩评论