Отладка. Утверждайте появляется в режиме выпуска

Все мы знаем это Debug.Assert не будет скомпилирован в dlls при компиляции в режиме выпуска. Но по некоторым причинам Debug.Assert действительно появлялся в версии выпуска компонента, который я записал. Я подозреваю, что мог бы иметь, портят мою установку csproject.

Любая идея, почему Debug.Assert появляется в режиме выпуска?

P/S: Я проверил дважды, чтобы удостовериться, что я действительно компилировал в режиме выпуска прежде, чем задать этот вопрос.

Примечание 2: я проверил свой csproject дважды, и я нашел, что в конфигурации Выпуска, Определить постоянная ОТЛАДКА не отмечается, указывая, что для этой части моя установка корректна.

17
задан Graviton 11 June 2010 в 09:26
поделиться

6 ответов

Я нашел ответ; это потому, что в начале файла cs внутри проекта определен препроцессор #define DEBUG. Его удаление решает проблему

14
ответ дан 30 November 2019 в 10:19
поделиться

Проверьте свойство DefineConstants в файле проекта, оно должно быть:

  • DEBUG; TRACE для Debug конфигурация
  • TRACE для Release конфигурация

Убедитесь, что в вашем коде нет #define DEBUG .

28
ответ дан 30 November 2019 в 10:19
поделиться

Помните, что «Режим выпуска» - это просто конфигурация сборки с именем «Выпуск». Это не обязательно означает что-либо об используемых настройках компиляции: вполне возможно создать конфигурацию под названием «Release», которая фактически компилирует все с настройками отладки. Или вообще ничего не компилирует!

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

О возможности, еще не упомянутой: в VS, если вы выпадаете из выпадающего списка конфигурации сборки (где вы обычно выбираете «Отладка» или «Выпуск») и выбираете «Диспетчер конфигураций», вы можете увидеть, что означает каждая конфигурация сборки решения для каждый из ваших проектов. Вы заметите, что вы можете, например, настроить сборку «Release» для решения, чтобы по-прежнему создавать некоторые компоненты в режиме отладки, если хотите.

11
ответ дан 30 November 2019 в 10:19
поделиться

Вы проверили файл проекта? Определяемые константы НЕ должны содержать DEBUG

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
4
ответ дан 30 November 2019 в 10:19
поделиться

В дополнение к пункту, который сделали madgnome и rdkleine, можете ли вы также проверить это, когда solution настроен на сборку в режиме выпуска, и ваш проект также настроен на сборку в режиме выпуска. Возможна сборка проекта в режиме отладки, когда выпуск устанавливается на уровне проекта.

Для этого щелкните решение правой кнопкой мыши в обозревателе решений VS и выберите Configuration Manager. Убедитесь, что для «Активная конфигурация решения» выпуска, который вы планируете, написано «выпуск, а не отладка» для его конфигурации.

Если это все еще не проливает света, то можете ли вы добавить фрагмент кода, окруженный «#if DEBUG», и посмотреть, будет ли он скомпилирован?

1
ответ дан 30 November 2019 в 10:19
поделиться

Используете ли вы какой-либо процесс сборки, например Nant или MSBuild, или даже проект веб-развертывания?

Кроме того, убедитесь, что в режиме выпуска перейдите в свойства вашего проекта и убедитесь, что флажок «Определить константу отладки» не установлен.

1
ответ дан 30 November 2019 в 10:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: