Как узнать, выполняется ли приложение как событие после/предварительной сборки или автономно?

У меня есть приложение, которое запускается как событие после сборки:

Свойства проекта -> События сборки: call "$(TargetDir)\bin\myApp.exe" "$(ProjectPath)"

Однако иногда я запускаю его сам по себе — иногда из Visual Studio, а иногда прямо из консоли.

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

Есть ли какой-то флаг или переменная среды, которую я могу проверить?

Примечание. Я хочу проверить это в запущенном приложении.


person pushkin    schedule 21.12.2016    source источник
comment
Что вы имеете в виду под запуском в качестве пост/предварительного события? Вы имеете в виду, что ваше приложение работает с подключенным отладчиком? Можете ли вы привести пример?   -  person Daniel    schedule 21.12.2016
comment
@ Даниэль Да, я должен упомянуть об этом. Я работаю с подключенным отладчиком. Я настраиваю его как событие публикации или предварительной сборки через Свойства проекта -> События сборки.   -  person pushkin    schedule 21.12.2016
comment
Не могли бы вы опубликовать свой сценарий события сборки? Я думаю маловероятно, что отладчик автоматически подключается к процессу, запущенному событием сборки.   -  person Daniel    schedule 21.12.2016
comment
Я думаю, что это проблема XY: Почему вы хотите знать, как было запущено ваше приложение? Какая может быть разница?   -  person abelenky    schedule 21.12.2016
comment
Не могли бы вы добавить параметр в событие сборки, а затем проверить его с помощью GetCommandLineArgs.   -  person WhoIsRich    schedule 21.12.2016
comment
@abelenky Когда я запускаю событие после сборки, оно выводит некоторые данные, которые отформатированы так, как понимает Visual Studio, но не особенно удобочитаемы для человека. Если я запускаю из консоли, я хочу отформатировать вывод по-другому.   -  person pushkin    schedule 21.12.2016
comment
@WhoIsRich Я мог бы добавить параметр, который сообщает ему, как он запускается, но мне было интересно, есть ли другой способ сделать это. Я бы предпочел больше ничего не передавать.   -  person pushkin    schedule 21.12.2016


Ответы (1)


Следующее сообщит вам, подключен ли отладчик.

if(System.Diagnostics.Debugger.IsAttached)
{
    // ...
}
person Daniel    schedule 21.12.2016
comment
В моем случае это не сработает. Я обновил свой вопрос. - person pushkin; 21.12.2016