c# - debug - visual studio релиз проекта




Будет ли#RELEASE работать, как#if DEBUG делает в C#? (7)

«Pop Catalin» понял все правильно. Управление определением, основанное на типе сборки, обеспечивает большую гибкость. Например, вы можете иметь конфигурацию «DEBUG», «DEMO» и «RELEASE» в одном и том же решении. Это предотвращает необходимость дублирования программирования с двумя различными решениями.

Итак, да #if RELEASE или #if (RELEASE) работает так же, как #if DEBUG когда определен условный символ компиляции RELEASE.

Из сообщения «Pop Catalin» следует следующее: если вы хотите определить константу RELEASE для конфигурации выпуска, перейдите в: * Свойства проекта -> Сборка * Выберите режим выпуска * в текстовом поле символов условной компиляции введите: RELEASE

Во всех примерах, которые я видел в директиве компилятора #if, они используют «DEBUG». Можно ли использовать «RELEASE» таким же образом, чтобы исключить код, который я не хочу запускать при компиляции в режиме отладки? Код, который я хочу окружить этим блоком, отправляет кучу писем, и я не хочу случайно отправлять их при тестировании.


Вы можете использовать #if (! DEBUG) для этих целей.


Нет, не будет, если вы не выполните какую-то работу.

Важная часть здесь - это то, что DEBUG действительно есть, и это своего рода константа, определяемая компилятором.

Если вы проверите свойства проекта, на вкладке «Сборка» вы найдете три вещи:

  • Текстовое поле с надписью «Условные символы компиляции»
  • Флажок с надписью «Определить константу DEBUG»
  • Флажок «Определить константу TRACE»

Не существует такого флажка, а также константа / символ, предварительно определенный с именем RELEASE.

Однако вы можете легко добавить это имя в текстовое поле с надписью «Условные символы компиляции», но перед тем, как это сделать, убедитесь, что вы настроили конфигурацию проекта в режиме Release, так как эти параметры настроены для каждой конфигурации.

Поэтому, если вы не добавите это в текстовое поле, #if RELEASE не будет создавать какой-либо код под любой конфигурацией.

Изменить : Исправлено #ifdef в #if (спасибо Daniel)


Нету.

Хотя в конфигурации отладки существует определенная константа DEBUG (автоматически определяемая Visual Studio), в то время как для режима выпуска такой константы не существует. Проверьте настройки проекта в процессе сборки.

Выбор [Define DEBUG constant] в Project -> Build похож на включение #define DEBUG в начале каждого файла.

Если вы хотите определить константу RELEASE для конфигурации выпуска, перейдите по ссылке:

  • Свойства проекта -> Сборка
  • Выберите режим выпуска
  • в текстовом поле символов условной компиляции введите: RELEASE

Я знаю, что это старый вопрос, но, возможно, стоит упомянуть, что вы можете создавать свои собственные конфигурации вне DEBUG и RELEASE, такие как TEST или UAT.

Если затем на вкладке «Сборка» на странице свойств проекта вы затем установите «Условные символы компиляции» в TEST (например), вы можете затем использовать конструкцию, такую ​​как

#if (DEBUG || TEST )
    //Code that will not be executed in RELEASE or UAT
#endif

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


Я никогда не видел этого раньше ... но я видел:

#if (DEBUG == FALSE)

а также

#if (!DEBUG)

Эта работа для тебя?


RELEASE не определен, но вы можете использовать

#if (!DEBUG)
  ...
#endif




debugging