2017-02-02 30 views
0

У меня есть только две среды: разработка и производство. Будет ли неплохо использовать следующий код, чтобы узнать, работает ли приложение в том или ином?Правильно ли использовать Debugger.IsAttached для определения среды?

bool IsProduction() 
{ 
    return !Debugger.IsAttached; 
} 

Я прочитал this и this, но мне кажется, дискуссии приняли иной путь.

Как использовать ключ appSettings?

<appSettings> 
    <add key="Environment" value="Dev"/> 
</appSettings> 

Что произойдет, если кто-нибудь отредактирует файл конфигурации? Должен ли код иметь механизм «двойной проверки»? Должно ли значение быть зашифрованным или слишком много?

Спасибо за ваше время!

+0

Вашего метода говорит «если отладчик подключен, то мы в производстве». Вы привыкли отлаживать только в производстве и никогда не разрабатывать? Я очень смущен вашим кодом, и только это причина не делать этого. –

+0

В более общем плане вы должны использовать метод «есть метод отладчика» для * только одна вещь *: чтобы увидеть, подключен ли отладчик. –

+0

@EricLippert извините, мне не хватало! оператор. – brugnner

ответ

2

Debugger.IsAttached будет возвращать true только в том случае, если процесс имеет отладчик, присоединенный независимо от сборки (выполняется под VS или имеет внешний отладчик).

Если вы хотите diferentiate окружающей среды, основываясь на типе сборки вы можете использовать директивы препроцессора, чтобы установить логическое значение, что-то вроде этого:

#if DEBUG 
bool isDebug = true; 
#else 
bool isDebug = false; 
#endif 
+0

Это было лучшее решение для меня, спасибо! – brugnner

+0

Вы также можете использовать атрибут [[Условный («DEBUG»)] '([Документация MSDN] (https://msdn.microsoft.com/en-us/library/system.diagnostics.conditionalattribute.aspx)) – Brian

0

Первого метод, использующий Debugger.IsAttached не собирается работать даже в разработке, если у вас фактически нет отладчика, подключенного к процессу.

Конфигурационные значения - это правильный подход и, вероятно, лучшее, что я знаю, с точки зрения гибкости. Вы можете настроить различные среды и с помощью конфигурационных файлов преобразования это будет автоматически обновляться во время развертывания.

Если вы хотите получить больше информации о методе трансформации конфигурации я могу предоставить вам некоторые ссылки