Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
Al generar proyectos, con frecuencia es necesario compilar los mismos componentes con distintas opciones de generación. Por ejemplo, se puede crear una versión de depuración con información de símbolos o una versión de lanzamiento sin información de símbolos pero con optimizaciones habilitadas. También se puede generar un proyecto para que se ejecute en una plataforma concreta, como x86 o x64. En todos estos casos, la mayoría de las opciones de generación no varían y sólo cambian algunas opciones para controlar la configuración de generación. Con MSBuild, se utilizan propiedades y condiciones para crear configuraciones de compilación diferentes.
Utilizar propiedades para modificar proyectos
El elemento Property define una variable a la que se hace referencia en varias ocasiones en un archivo de proyecto, como la ubicación de un directorio temporal, o que establece los valores de las propiedades utilizadas en varias configuraciones, como una versión de depuración y una versión de lanzamiento. Para obtener más información sobre propiedades, vea Propiedades de MSBuild.
Se pueden utilizar propiedades para cambiar la configuración de la generación sin tener que cambiar el archivo de proyecto. El atributo Condition del elemento Property y el elemento PropertyGroup permiten cambiar el valor de las propiedades. Para obtener más información acerca de las condiciones de MSBuild, vea Condiciones de MSBuild.
Para establecer un grupo de propiedades basado en otra propiedad
Utilice un atributo Condtion en un elemento PropertyGroup similar al siguiente:
<PropertyGroup Condition="'$(Flavor)'=='DEBUG'"> <DebugType>full</DebugType> <Optimize>no</Optimize> </PropertyGroup>
Para definir una propiedad basada en otra propiedad
Utilice un atributo Condition en un elemento Property similar al siguiente:
<DebugType Condition="'$(Flavor)'=='DEBUG'">full</DebugType>
Especificar propiedades en la línea de comandos
Una vez que el archivo de proyecto se ha escrito para aceptar varias configuraciones, es necesario tener la capacidad de cambiar dichas configuraciones siempre que se genere el proyecto. MSBuild proporciona esta capacidad puesto que permite que se especifiquen propiedades en la línea de comandos mediante el modificador /property o /p.
Para establecer una propiedad del proyecto en la línea de comandos
Utilice el modificador /property con la propiedad y el valor de la propiedad. Por ejemplo:
msbuild file.proj /property:Flavor=Debug
O bien
Msbuild file.proj /p:Flavor=Debug
Para especificar más de una propiedad del proyecto en la línea de comandos
Utilice el modificador /property o /p varias veces con la propiedad y los valores de la propiedad, o bien utilice un modificador /property o /p y separe las distintas propiedades con punto y coma (;). Por ejemplo:
msbuild file.proj /p:Flavor=Debug;Platform=x86
O bien
msbuild file.proj /p:Flavor=Debug /p:Platform=x86
Las variables de entorno también se tratan como propiedades y se incorporan automáticamente mediante MSBuild. Para obtener más información sobre el uso de variables de entorno, vea Cómo: Utilizar variables de entorno al generar.
Nota: |
|---|
El valor de la propiedad especificado en la línea de comandos tiene prioridad sobre cualquier valor establecido para la misma propiedad en el archivo de proyecto, y dicho valor en el archivo de proyecto tiene prioridad sobre el valor en una variable de entorno. |
Ejemplo
En el ejemplo de código siguiente, el proyecto "Hello World" contiene dos grupos de propiedades nuevos que se pueden utilizar para crear una versión de depuración y una versión de lanzamiento.
Para generar la versión de depuración (debug) de este proyecto, escriba:
msbuild consolehwcs1.proj /p:flavor=debug
Para generar la versión comercial (retail) de este proyecto, escriba:
msbuild consolehwcs1.proj /p:flavor=retail
<Project DefaultTargets = "Compile"
xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<!-- Sets the default flavor of an environment variable called
Flavor is not set or specified on the command line -->
<PropertyGroup>
<Flavor Condition="'$(Flavor)'==''">DEBUG</Flavor>
</PropertyGroup>
<!-- Define the DEBUG settings -->
<PropertyGroup Condition="'$(Flavor)'=='DEBUG'">
<DebugType>full</DebugType>
<Optimize>no</Optimize>
</PropertyGroup>
<!-- Define the RETAIL settings -->
<PropertyGroup Condition="'$(Flavor)'=='RETAIL'">
<DebugType>pdbonly</DebugType>
<Optimize>yes</Optimize>
</PropertyGroup>
<!-- Set the application name as a property -->
<PropertyGroup>
<appname>HelloWorldCS</appname>
</PropertyGroup>
<!-- Specify the inputs by type and file name -->
<ItemGroup>
<CSFile Include = "consolehwcs1.cs"/>
</ItemGroup>
<Target Name = "Compile">
<!-- Run the Visual C# compilation using input files
of type CSFile -->
<CSC Sources = "@(CSFile)"
DebugType="$(DebugType)"
Optimize="$(Optimize)"
OutputAssembly="$(appname).exe" >
<!-- Set the OutputAssembly attribute of the CSC
task to the name of the executable file that is
created -->
<Output TaskParameter="OutputAssembly"
ItemName = "EXEFile" />
</CSC>
<!-- Log the file name of the output file -->
<Message Text="The output file is @(EXEFile)"/>
</Target>
</Project>
Nota: