2009-06-26 3 views
1

Есть ли способ в коде для определения того, что вы используете в «Конфигурации решений»? Например, «Отладка» или «Релиз»?Определение конфигурации решений (Visual Studio)

У меня есть служба, которую мне нравится тестировать в среде IDE в Debug, прямо сейчас у меня есть bool, который я установил, либо запускает «сервис», если установлен в true (который затем использует метод OnStart для запуска моего основного '), если он установлен в false, я просто запускаю метод' main '. Это отлично работает, но я часто забываю перезагрузить bool после тестирования, а затем, когда я иду, чтобы установить сервис, он терпит неудачу, и мне нужно вернуться, перезагрузить bool, перекомпилировать и т. Д.

Если бы я мог просто программно определить, что я был запущен в среде IDE в Debug, тогда я мог обойти эту проблему.

Edit: Хотя думать, что это до конца, я думаю, что мне действительно нужно, в конце концов, чтобы определить, если я нахожусь в «играет» приложение в язя и не конфигурации soulutions. Это позволит мне скомпилировать либо отладочную, либо другую конфигурацию.

Простейшее решение кажется проверить «System.Diagnostics.Debugger.IsAttached»

ответ

2

Чтобы определить, является ли вы работаете под отладкой в ​​IDE, смотрите на Debugger класса, в частности IsAttached свойства ...

14

Вы не можете непосредственно смотреть на конфигурации решения, но вы можете использовать несколько подсказок, чтобы «угадать», какую версию вы находитесь в Например, макрос препроцессора DEBUG будет определен только в конфигурации решения Debug для C#.

bool InDebugConfiguration() { 
#if DEBUG 
    return true; 
#else 
    return false; 
#endif 
} 
+0

+1: избили за считанные секунды –

+1

В соответствии с конфигурациями по умолчанию, предоставляемыми Visual Studio при первом создании проекта, это правда, но также можно определить макрос DEBUG в других типах сборки, если вы выберете. Это, однако, будет определять только сборку проекта, а не работу с отладчиком в соответствии с исходным вопросом. –

+0

@Martin, исходным вопросом является поиск конфигурации проекта. Позднее было обновлено, чтобы сказать, что работает с прикрепленным отладчиком. Да, люди могут быть злыми и заставили Debug не определять DEBUG, поэтому я сказал, что явным образом обозначил это как «предположение» относительно окончательного решения. – JaredPar

0

Off верхней части моей головы, вы также можете добавить пост- build для копирования в файле конфигурации:

if $(ConfigurationName)==Debug goto DEBUG_POSTBUILD 
goto RELEASE_POSTBUILD 


REM -----------DEBUG-----------  
:DEBUG_POSTBUILD 
echo POSTBUILD-Debug Config Copy 
copy "$(ProjectDir)\config_debug.cfg" "$(TargetDir)\config.cfg" /y 
if errorlevel 1 goto FAILED 

... затем войдите в конфигурационный файл во время работы. Однако это не связано с самой сборкой кода.

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