2010-06-11 9 views
15

Todos sabemos que Debug.Assert no serán compilados en las DLL cuando se compila en modo de lanzamiento. Pero por alguna razón, Debug.Assertapareció en la versión de lanzamiento de un componente que escribí. Sospecho que podría haber estropeado mi configuración de csproject.Debug.Assert aparece en el modo de lanzamiento

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

P/S: He comprobado doble para asegurarse de que realmente estaba compilando en modo de lanzamiento antes de hacer esta pregunta.

Nota 2: he comprobado el doble de mi csproject, y me encontré con que en la configuración de lanzamiento, el Definir constante DEBUG no está marcado, lo que indica que para esta parte de mi configuración es correcta.

Respuesta

13

descubrí la respuesta; es porque hay un preprocesador #define DEBUG definido al comienzo de un archivo cs dentro del proyecto. La eliminación de los que resuelve el problema

+5

Eso arruinará tu día;) –

1

¿Utiliza cualquier tipo de proceso de construcción, tales como Nant o MSBuild, o incluso un proyecto web a la implementación?

Además, asegúrese de que en modo de lanzamiento, vaya a las propiedades del proyecto y comprobar el 'Definir de depuración constante' no está marcada.

26

comprobar la propiedad DefineConstants del archivo de proyecto, que debe ser:

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

Comprobar que no tiene cualquier #define DEBUG en su código.

+0

Comprobé dos veces; en la configuración 'release' la constante ** DEBUG ** no está allí. – Graviton

+0

+1 for '#define DEBUG', que parece ser la causa ... –

4

¿Has comprobado el archivo del proyecto? definir constantes no deben 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> 
1

Como aún más hasta el punto que madgnome y rdkleine han hecho, puede también comprobar que cuando la solución se establece para construir en modo de lanzamiento, que su proyecto también está listo para construir en la liberación modo. Es posible tener una compilación de proyecto en modo de depuración, cuando la versión se establece a nivel de proyecto.

Para esto, haga clic derecho en el explorador de la solución VS en la solución y seleccione Configuration Manager. Verifique que para la "Configuración de solución activa" de la versión de su proyecto, indique la versión, no la depuración, para su configuración.

Si esto todavía no arroja luz, entonces se puede añadir un trozo de código rodeada por un "Test # if" y ver si esto se compila en?

8

Recuerde que "Modo de lanzamiento" es solo una configuración de compilación con un nombre de "Liberar". Eso no implica necesariamente nada acerca de la configuración de compilación utilizada: es perfectamente posible crear una configuración llamada "Versión" que en realidad compila todo con la configuración de depuración. O, de hecho, ¡no compila nada en absoluto!

Las otras respuestas sugieren algunos de los lugares que se deben buscar, pero básicamente parece que la configuración de su proyecto o solución ha reconfigurado las versiones de "Liberar" para incluir información de depuración. En la posibilidad no mencionada aún: en VS, si desplega el cuadro combinado de configuración (donde normalmente selecciona "Depurar" o "Versión") y selecciona "Administrador de configuración", puede ver lo que significa cada configuración de compilación de la solución para cada uno de tus proyectos. Notará que puede, por ejemplo, configurar una compilación de "Liberación" en la solución para seguir creando algunos componentes en el modo de depuración si así lo desea.

+0

Ahora, ¿por qué me rechazan 2 años después? –

Cuestiones relacionadas