Все мы знаем это Debug.Assert
не будет скомпилирован в dlls при компиляции в режиме выпуска. Но по некоторым причинам Debug.Assert
действительно появлялся в версии выпуска компонента, который я записал. Я подозреваю, что мог бы иметь, портят мою установку csproject.
Любая идея, почему Debug.Assert
появляется в режиме выпуска?
P/S: Я проверил дважды, чтобы удостовериться, что я действительно компилировал в режиме выпуска прежде, чем задать этот вопрос.
Примечание 2: я проверил свой csproject дважды, и я нашел, что в конфигурации Выпуска, Определить постоянная ОТЛАДКА не отмечается, указывая, что для этой части моя установка корректна.
Я нашел ответ; это потому, что в начале файла cs внутри проекта определен препроцессор #define DEBUG
. Его удаление решает проблему
Проверьте свойство DefineConstants
в файле проекта, оно должно быть:
DEBUG; TRACE
для Debug конфигурация TRACE
для Release конфигурация Убедитесь, что в вашем коде нет #define DEBUG
.
Помните, что «Режим выпуска» - это просто конфигурация сборки с именем «Выпуск». Это не обязательно означает что-либо об используемых настройках компиляции: вполне возможно создать конфигурацию под названием «Release», которая фактически компилирует все с настройками отладки. Или вообще ничего не компилирует!
В других ответах предлагается несколько мест, где можно поискать, но в основном это похоже на то, что ваш проект или настройки решения перенастроили сборки «Release», чтобы включить отладочную информацию.
О возможности, еще не упомянутой: в VS, если вы выпадаете из выпадающего списка конфигурации сборки (где вы обычно выбираете «Отладка» или «Выпуск») и выбираете «Диспетчер конфигураций», вы можете увидеть, что означает каждая конфигурация сборки решения для каждый из ваших проектов. Вы заметите, что вы можете, например, настроить сборку «Release» для решения, чтобы по-прежнему создавать некоторые компоненты в режиме отладки, если хотите.
Вы проверили файл проекта? Определяемые константы НЕ должны содержать 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>
В дополнение к пункту, который сделали madgnome и rdkleine, можете ли вы также проверить это, когда solution настроен на сборку в режиме выпуска, и ваш проект также настроен на сборку в режиме выпуска. Возможна сборка проекта в режиме отладки, когда выпуск устанавливается на уровне проекта.
Для этого щелкните решение правой кнопкой мыши в обозревателе решений VS и выберите Configuration Manager. Убедитесь, что для «Активная конфигурация решения» выпуска, который вы планируете, написано «выпуск, а не отладка» для его конфигурации.
Если это все еще не проливает света, то можете ли вы добавить фрагмент кода, окруженный «#if DEBUG», и посмотреть, будет ли он скомпилирован?
Используете ли вы какой-либо процесс сборки, например Nant или MSBuild, или даже проект веб-развертывания?
Кроме того, убедитесь, что в режиме выпуска перейдите в свойства вашего проекта и убедитесь, что флажок «Определить константу отладки» не установлен.