2011-02-19 14 views
16

Actualmente, en mi construcción automatizado, yo uso el devenv.exe para construir mis archivos de solución:MSBUILD con archivos de solución con DefineConstants

devenv /build myproject1.sln 

Ahora, quiero crear dos versiones de mi solicitud, la versión normal y la versión ligera. El código fuente para estas dos versiones es el mismo, es solo que en la versión ligera algunas de las funciones están deshabilitadas, y para esto utilizo las directivas de preprocesador #define lite (en el archivo csproject, estas constantes se definen en DefineConstants Grupo de propiedades).

En MsBuild - o simplemente devenv build normal - ¿es posible especificar si el símbolo que quiero debería estar presente en la compilación? La razón por la que pregunto esto es porque quiero construir mi archivo sln por primera vez con las directivas de preprocesador lite (para la versión lite), y la segunda vez, sin las directivas de preprocesador lite (para la versión completa).

Respuesta

29

En el archivo de proyecto de complemento nueva sección PropertyGroup para la versión lite

<PropertyGroup Condition="'$(LiteVersion)'=='true'"> 
    <DefineConstants>$(DefineConstants);lite</DefineConstants> 
</PropertyGroup> 

Retire Lite de todas las definiciones de DefineConstants.

MSBuild.exe myprojeect1.sln 
MSBuild.exe myprojeect1.sln /p:LiteVersion=true 

Puede crear una configuración adicional en VS para cambiar de una versión a otra. Pero puede llevar a desajustes de configuración cuando se olvidó de agregar una bandera a la configuración lite. Puedo sugerir una solución más elegante. Crear archivo .bat o cambiar el enlace para ejecutar myproject1.sln:

set LiteVersion=true 
devenv.exe myproject1.sln 
+0

Probablemente sea mejor colocar el grupo personalizado anterior debajo de los normales que definen la depuración, la versión, etc. – paulecoyote

2

Cree dos configuraciones en su archivo sln, una para el Lite y otra para el Normal. En la configuración Lite, defina la directiva del preprocesador a través del cuadro de diálogo Propiedades del proyecto.

Luego, al hacer la compilación usando devenv.com, especifique la configuración correcta en la cual compilar.

+0

¿Desea presentar un ejemplo de cómo hacerlo? – Graviton

+0

¿Por qué se ha bajado esta respuesta? – Anttu

+0

Esto está bien para 1 propiedad que cambia la configuración, pero no escala bien ... ¿Qué sucede si tiene 2+ configuraciones? Tal vez una compilación de registro especial. Entonces necesitaría 2 * 2 * 2 configuraciones, p. Ej. Debug_Lite_Logging: todo se vuelve muy complicado ... Prefiero la respuesta de Sergio. –

Cuestiones relacionadas