2010-09-30 1 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

ответ

10

Использование Debugger.IsAttached.

Это статический метод в System.Diagnostics имен, как вы можете вывести из названия, он возвращает истину, если подключен отладчика (был ли он прикреплен после запуска или нет).

Вы можете поместить это в пункт ввода приложения (main), чтобы узнать, было ли приложение приложено к приложению отладчика, но имейте в виду, что его можно подключить позднее.

+0

Спасибо за то, что вы сказали, что присоединяетесь позже, хотя в этом случае это не проблема – cordialgerm

0

Вы можете использовать: Debugger.IsAttached

Debugger класса является класс стоит посмотреть. Он содержит некоторые приятные лакомства.

4

Как уже упоминалось, вы можете использовать Debugger.IsAttached. Однако имейте в виду, что это не обязательно означает, что приложение было запущено отладчиком, возможно, оно было запущено нормально, а затем к процессу был присоединен отладчик (я не знаю, имеет ли значение для вас значение).

1

Чтобы сказать, если он был запущен в VS Debugger:

если (.. System.AppDomain.CurrentDomain.DomainManager.ToString() TOLOWER() содержит ("vshost") == TRUE)

Смежные вопросы