tools instalar español argumentos msbuild

instalar - msbuild jenkins



MSBuild: especificando un objetivo desde la línea de comando (5)

De: http://msdn.microsoft.com/en-us/library/ms164311.aspx

/ objetivo: objetivos

Construye estos objetivos en este proyecto. Use un punto y coma o una coma para separar múltiples objetivos, o especifique cada objetivo por separado. / t también es aceptable. Por ejemplo: / target: Resources; Compile

Tengo una tarea de MSBuild para construir un proyecto específico en un archivo de solución. Se ve algo como esto:

<Target Name="Baz"> <MSBuild Projects="Foo.sln" Targets="bar:$(BuildCmd)" /> </Target>

Desde la línea de comandos, puedo configurar BuildCmd en Rebuild o Clean y funciona como se esperaba:

msbuild / target: Baz / property: BuildCmd = Reconstruir MyMsbuildFile.xml msbuild / target: Baz / property: BuildCmd = Limpiar MyMsbuildFile.xml

Pero, ¿qué palabra utilizo para configurar BuildCmd para construir? Intenté Compile y Compile y dejarlo en blanco o indefinido, pero siempre recibo un error.

msbuild / target: Baz / property: BuildCmd = Build MyMsbuildFile.xml Foo.sln: error MSB4057: El objetivo "bar: Build" no existe en el proyecto.

msbuild / target: Baz / property: BuildCmd = Compilar MyMsbuildFile.xml Foo.sln: error MSB4057: La barra de destino: compilar no existe en el proyecto.

msbuild / target: Baz MyMsbuildFile.xml Foo.sln: error MSB4057: la "barra:" de destino no existe en el proyecto.


Simplemente edite el archivo sln usted mismo y descubra que MSBuild es una sintaxis muy fácil, solo busque objetivos.


Usando la plantilla de CheGueVerra, se me ocurrió la siguiente solución:

<PropertyGroup> <ProjBuildCmd Condition="''$(BuildCmd)'' != ''Build''">:$(BuildCmd)</ProjBuildCmd> <SolnBuildCmd Condition="''$(BuildCmd)'' != ''Build''">$(BuildCmd)</SolnBuildCmd> </PropertyGroup>

Y luego, en lugar de usar $(BuildCmd) directamente, utilizo $(ProjBuildCmd) o $(SolnBuildCmd) esta manera:

<!-- Build the ''bar'' project only --> <Target Name="Baz"> <MSBuild Projects="Foo.sln" Targets="bar$(ProjBuildCmd)" /> </Target> <!-- Build the whole solution --> <Target Name="Baz2"> <MSBuild Projects="Foo.sln" Targets="$(SolnBuildCmd)" /> </Target>


La clave es condicionar la propiedad BuildCmd.

<Target Name="Baz"> <PropertyGroup> <BuildCmd Condition="''$(BuildCmd)'' != ''''">:$(BuildCmd)</BuildCmd> </PropertyGroup> <MSBuild Projects="Foo.sln" Targets="bar$(BuildCmd)" /> </Target>

De esta forma, si se configuran Limpiar o Reconstruir, se agregan dos puntos. Si no se agrega nada, BuildCmd simplemente estará en blanco, de forma predeterminada en el objetivo de compilación.

Nota : El grupo de propiedades debe residir en el destino, o será anulado cuando lo especifique en la línea de comando.


Entendí que desea construir un objetivo con un comando específico: Build, Clean, etc.

Así es como lo haría.

Cree una propiedad para recibir su comando de compilación, cuando no se especifique de manera predeterminada, compile

<PropertyGroup> <BuildCmd Condition=" ''$(BuildCmd)'' == ''''">Build</BuildCmd> </PropertyGroup>

Después, crea el objetivo que iniciará MSBuild con el objetivo especificado en el parámetro:

<Target Name=""> <MsBuild Projects="Foo.sln" Targets="$(BuildCmd)" /> </Target>

A continuación, llame a su archivo MSBuild con el objetivo y al parámetro BuildCmd de la siguiente manera:

msbuild msbuild.xml /t: /p:BuildCmd=Clean

Solo asegúrate de que el objetivo exista en la solución o el archivo del proyecto.