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.