c# visual-studio-2008

c# - Debug.Assert aparece en modo de lanzamiento



visual-studio-2008 (6)

Todos sabemos que Debug.Assert no se compilará en las DLL cuando se compile en modo de lanzamiento. Pero por alguna razón, Debug.Assert apareció en la versión de lanzamiento de un componente que escribí. Sospecho que podría haber arruinado mi configuración de csproject.

¿Alguna idea de por qué Debug.Assert aparece en modo de lanzamiento?

P / S: he comprobado dos veces para asegurarme de que realmente estaba compilando en modo de lanzamiento antes de hacer esta pregunta.

Nota 2: He verificado dos veces mi csproject y encontré que en la configuración de la versión, la constante Definir DEBUG no está marcada, lo que indica que para esta parte mi configuración es correcta.


¿Has revisado el archivo de proyecto? Definir constantes NO debe contener 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>


¿Utiliza algún tipo de proceso de compilación, como Nant o MSBuild, o incluso un proyecto de implementación web?

Además, asegúrese de que en el modo de lanzamiento, vaya a las propiedades de su proyecto y verifique que la opción ''Definir constante de DEPURACIÓN'' no esté marcada.


Como punto adicional al que se han referido madgnome y rdkleine, ¿puede también verificar que cuando la solución está configurada para construir en modo de lanzamiento, su proyecto también está configurada para construir en modo de lanzamiento. Es posible tener un proyecto compilado en el modo de depuración, cuando el lanzamiento se establece en el nivel del proyecto.

Para ello, haga clic con el botón derecho en el explorador de soluciones VS en la solución y seleccione Configuration Manager. Verifique que para la "Configuración de la solución activa" de la versión que usted proyecta dice versión, no depuración, para su configuración.

Si esto aún no ilumina, ¿puedes agregar un fragmento de código rodeado por un "#if DEBUG" y ver si se compila?


Descubrí la respuesta; es porque hay un #define DEBUG preprocesador definido al inicio de un archivo cs dentro del proyecto. Quitarlo resuelve el problema.


Recuerde que "Modo de lanzamiento" es solo una configuración de compilación con un nombre de "Lanzamiento". Eso no necesariamente implica nada acerca de la configuración de compilación que se está utilizando: es perfectamente posible crear una configuración llamada "Release" que compile todo con la configuración de depuración. O, de hecho, ¡no compila nada en absoluto!

Las otras respuestas sugieren algunos de los lugares para buscar, pero básicamente suena como que su proyecto o la configuración de la solución han reconfigurado las compilaciones "Release" para incluir información de depuración.

Posibilidad aún no mencionada: en VS, si se despliega el cuadro combinado de configuración de compilación (donde normalmente selecciona "Depurar" o "Liberar") y selecciona "Administrador de configuración", puede ver qué significa cada configuración de compilación de solución para cada uno de sus proyectos Notará que puede, por ejemplo, configurar una compilación de "Lanzamiento" en la solución para seguir compilando algunos componentes en el modo de depuración si así lo desea.


Verifique la propiedad DefineConstants en su archivo de proyecto, debería ser:

  • <DefineConstants>DEBUG;TRACE</DefineConstants> para la configuración de la depuración
  • <DefineConstants>TRACE</DefineConstants> para la configuración de la versión

Comprueba que no tengas #define DEBUG en tu código.