Во всех примерах, которые я видел в директиве компилятора #if, они используют «DEBUG». Могу ли я использовать «RELEASE» таким же образом, чтобы исключить код, который я не хочу запускать при компиляции в режиме отладки? Код, который я хочу окружить этим блоком, рассылает множество электронных писем, и я не хочу случайно отправлять их при тестировании.
277
#if !DEBUG
выполняет ту же функцию,#if RELEASE
что и раньше. С другой стороны ,#if DEBUG
то#else
тогда ,#endif
если есть другой код для запуска в режимах.Ответы:
Нет, не будет, если вы не сделаете какую-то работу.
Важной частью здесь является то, чем на самом деле является DEBUG, и это своего рода константа, с которой может проверить компилятор.
Если вы проверите свойства проекта, на вкладке Build вы найдете три вещи:
Нет такого флажка, ни предопределенной константы / символа с именем RELEASE.
Однако вы можете легко добавить это имя в текстовое поле, помеченное условными символами компиляции, но перед этим убедитесь, что вы установили конфигурацию проекта в Release-mode, так как эти параметры указаны для каждой конфигурации.
Таким образом, в основном, если вы не добавите это в текстовое поле,
#if RELEASE
вы не получите никакого кода при любой конфигурации.источник
RELEASE
не определено, но вы можете использоватьисточник
RELEASE
был ли он определен.Нет.
В то время как в конфигурации отладки есть
DEBUG
определенная константа (автоматически определенная Visual Studio), в то время как для режима выпуска такой константы нет Проверьте настройки вашего проекта при сборке.Выбор [Определить константу DEBUG] в Project -> Build подобен включению #define DEBUG в начале каждого файла.
Если вы хотите определить константу RELEASE для конфигурации релиза, перейдите по ссылке:
источник
#if (RELEASE) [RequireHttps] #endif
На моем VS установка (VS 2008)
#if RELEASE
не работает. Однако вы можете просто использовать#if !DEBUG
Пример:
источник
Я никогда не видел этого раньше ... но я видел:
и
Это работа для тебя?
источник
!
будет работать только оператор, как в вашем втором примере.Вы можете использовать
#if(!DEBUG)
для этих целей.источник
«Поп-Каталин» понял это правильно. Управление определением на основе типа сборки обеспечивает большую гибкость. Например, вы можете иметь конфигурации «DEBUG», «DEMO» и «RELEASE» в одном решении. Это предотвращает необходимость дублирования программирования с двумя различными решениями.
Так что да
#if RELEASE
или#if (RELEASE)
работает так же, как#if DEBUG
когда определен условный символ компиляции RELEASE.Следующее взято из поста "Pop Catalin": Если вы хотите определить константу RELEASE для конфигурации релиза, перейдите по ссылке: * Свойства проекта -> Построить * Выбрать режим релиза * в текстовом поле Условные символы компиляции введите: RELEASE
источник
Я знаю, что это старый вопрос, но стоит упомянуть, что вы можете создавать свои собственные конфигурации вне DEBUG и RELEASE, такие как TEST или UAT.
Если затем на вкладке «Построение» на странице свойств проекта вы установите для «Условных символов компиляции» значение «ТЕСТ» (например), вы можете использовать такую конструкцию, как
Вы можете использовать эту конструкцию по определенной причине, например, для разных клиентов, если у вас есть такая необходимость, или даже, например, для целых веб-методов. Мы также использовали это в прошлом, когда некоторые команды вызывали проблемы на определенном оборудовании, поэтому у нас есть конфигурация для приложения при развертывании на оборудовании X.
источник
Вы можете создавать свои собственные условные символы времени компиляции (любое имя, которое вам нравится). Перейдите в «Диалог сборки проекта», расположенный в окне свойств проекта, пункт меню: Project -> [projectname] Properties ...
Вы также можете определить их "в верхней части файла кода C #". Подобно:
Вы можете использовать символ в выражении #if:
источник
почему не просто
источник
/d:RELEASE
также будет работать. Вы также можете добавить это к условным символам компиляции в разделе «Конфигурация выпуска» (вкладка «Свойства проекта»)