Pregunta

Creé una configuración llamada Test a través de Visual Studio que actualmente solo toma todas las configuraciones de DEPURACIÓN, sin embargo, uso 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 el Propiedades comunes del proyecto MsBuild indica que $ (Configuración) es un propiedad común pero siempre aparece en blanco?

¿Esto significa que nunca se configura sino que simplemente está reservado para mi uso o que SOLO puede detectar DEBUG | RELEASE? Si es así, ¿cuál es el punto de permitir la creación de diferentes configuraciones de compilación?

¿Fue útil?

Solución

No he hecho mucho con la definición de un archivo de configuración de MSBUILD, pero he realizado 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 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ú Build: Configuration Manager
  • En el cuadro de diálogo que aparece, haga clic en el menú desplegable Configuración de solución activa y haga clic en < Nuevo ... > para crear un nueva configuración de compilación.

Otros consejos

Claro, puede tener tantas configuraciones de compilación personalizadas como desee definir. Consulte esta pregunta relacionada para ver cómo se vería la configuración.

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

Tenga en cuenta que cuando 'inside visual studio', los $ (Configuración) y $ (Plataforma) siempre los establece VS usando las cosas del Administrador de configuración en los menús desplegables en la parte superior. Mientras que si desea establecer estos valores usando 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 proyecto VS 'predeterminan' un valor para Configuración / Plataforma, de modo que puede usar la línea de comandos MSBuild sin especificar estos valores explícitamente. Esto es bueno, pero hace que estas dos propiedades útiles / comunes parezcan un poco más mágico / extraño de lo que realmente son.)

Normalmente, lo que hago para que Release y Debug compilen desde un solo script de MSBuild es:

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

Luego agregue esto pero de la salsa secreta de MSBuild:

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

Y luego, para cada objetivo, haga 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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top