visual studio proyecto para modo este depurar depuracion debug configuracion compilar compilacion cambie visual-studio-2005 msbuild

visual-studio-2005 - proyecto - release debug visual studio



¿Msbuild reconoce cualquier configuración de compilación que no sea DEBUG | RELEASE? (4)

Claro, puede tener tantas configuraciones de compilación personalizadas como desee definir. Vea esta pregunta relacionada sobre cómo podría verse la configuración.

¿Cómo implementar condicionalmente un app.config basado en la configuración de compilación?

Creé una configuración llamada Test a través de Visual Studio que actualmente solo toma todas las configuraciones de DEBUG, sin embargo, empleé las condiciones del compilador para determinar algunas acciones específicas si la compilación es TEST | DEBUG | RELEASE.

Sin embargo, ¿cómo puedo obtener mi script MSBUILD para detectar la configuración de PRUEBA?

Actualmente construyo

<MSBuild Projects="@(SolutionsToBuild)" Properties="Configuration=$(Configuration);OutDir=$(BuildDir)/Builds/" />

Donde @ (SolutionsToBuild) es mi solución. En las Propiedades comunes del proyecto MsBuild, se indica que $ (Configuración) es una propiedad común pero siempre aparece en blanco.

¿Significa esto que nunca se configura sino que simplemente está reservado para mi uso o que SOLO puede detectar DEBUG | RELEASE? Si es así, ¿qué sentido tiene permitir la creación de diferentes configuraciones de compilación?


No he hecho mucho al definir un archivo de configuración de MSBUILD, pero he hecho compilaciones de diferentes configuraciones utilizando un archivo por lotes como este

msbuild /v:n /p:Configuration=Release "Capture.sln" msbuild /v:n /p:Configuration=ReleaseNoUploads "Capture.sln"

Definí la configuración de ReleaseNoUploads dentro de Visual Studio.

Esto es lo que tuve que hacer para eso (esto es Visual Studio 2005):

  • Abra el menú Herramientas: Opciones , vaya a la opción Proyectos y soluciones: General , y marque Mostrar configuraciones de compilación avanzadas .
  • Desde allí, vaya al menú Crear: Administrador de configuración .
  • En el cuadro de diálogo que aparece, haga clic en el menú desplegable Configuración de la solución activa y haga clic en <Nuevo ...> para crear una nueva configuración de construcción.

Normalmente, lo que hago para que ambas versiones se compilen a partir de un solo script de MSBuild es:

<PropertyGroup Condition="''$(Configuration)''==''''"> <Configuration>Debug;Release</Configuration> </PropertyGroup>

A continuación, agregue este pero de salsa secreta MSBuild:

<Target Name="configurations"> <CreateItem Include="$(Configuration)"> <Output TaskParameter="Include" ItemName="Configuration" /> </CreateItem> </Target>

Y luego para cada objetivo hacer algo como esto:

<Target Name="Compile" DependsOnTargets="configurations" Inputs="@(Configuration)" Outputs="target/%(Configuration.FileName)"> <MSBuild Projects="@(MyProjects)" Targets="Build" Properties="Configuration=%(Configuration.Identity);WarningLevel=1" /> </Target>


Tenga en cuenta que cuando ''dentro de Visual Studio'', $ (Configuración) y $ (Plataforma) siempre son configurados por VS utilizando el administrador de configuración en los menús desplegables en la parte superior. Mientras que si desea establecer estos valores utilizando msbuild desde la línea de comando, debe pasar los valores explícitamente (como en la respuesta de @ MarkBiek).

(La mayoría de las plantillas de proyectos VS "predeterminarán" un valor para Configuración / Plataforma, de modo que pueda usar MSBuild de la línea de comandos sin especificar estos valores explícitamente. Esto es bueno, pero hace que estas dos propiedades útiles / comunes parezcan un poco más mágicas. / Extraños de lo que realmente son.)