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