2009-07-31 17 views
5

Tengo 3 scripts de MSBUild para la implementación, 1 para implementar la IU 1 para implementar un par de servicios web. 1 para implementar servicios de back-end.Cómo llama a varias secuencias de comandos de MSBuild desde una secuencia de comandos de MSBuild

Ahora me gustaría crear una secuencia de comandos MSBuild de implementación de un clic, que llamaría a todas las 3 secuencias de comandos anteriores, que se pueden ejecutar desde un servidor de TeamCity.

Entonces, ¿cómo puedo llamar a estos tres scripts de MSBuild desde un script de MSBuild diferente?

Respuesta

7
+1

Un fragmento de código sería increíble. – Pat

+0

Hay muchos fragmentos de código en la página a la que he vinculado, más de los que cabrían en esta publicación;) – OregonGhost

0

No he utilizado TeamCity Server, pero una posible solución alternativa es combinar los tres scripts de compilación en un script. Y coloque las tareas de los tres scripts separados en objetivos separados en el archivo de compilación maestra. Entonces, en lugar de los tres scripts de compilación separados, tiene un script de compilación con tres objetivos, concretamente deployUI, deployServices, deployBackend. la muestra no probada a continuación:

<?xml version="1.0" encoding="utf-8" ?> 
    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="DefaultTarget" ToolsVersion="3.5"> 

    <Target Name="DefaultTarget"> 
      <CallTarget Targets="deployUI" ContinueOnError="false"></CallTarget> 
      <CallTarget Targets="deployServices" ContinueOnError="false"></CallTarget> 
      <CallTarget Targets="deployBackend" ContinueOnError="false"></CallTarget> 
    </Target> 

    <Target Name="deployUI"> 
      <!-- Put UI deployment tasks here --> 
    </Target> 

    <Target Name="deployServices"> 
      <!-- Put Services deployment tasks here --> 
    </Target> 

    <Target Name="deployBackend"> 
      <!-- Put Backend deployment tasks here --> 
    </Target> 
</Project> 
+0

Esta es una opción válida para fusionar los 3 componentes, pero quiero la capacidad de implementar los componentes de forma independiente si elijo , y no quiero duplicar el contenido del script de compilación en dos scripts. – Pradeep

+0

Tiene la capacidad de implementar componentes individualmente mediante el uso de instrucciones condicionales dentro del archivo de compilación. Si usa declaraciones condicionales, tampoco tiene que mantener archivos de script duplicados. solo proporcione el objetivo correcto mientras llama al archivo de compilación y listo. – desigeek

+0

Nota: ¿No estoy seguro de cómo ayuda la respuesta aceptada? En la tarea mencionada, no veo una forma de llamar a los archivos de compilación/scripts, que es lo que sus preguntas requieren. La tarea MSBuild le permite crear proyectos con algunas opciones, pero quería construir usando archivos de compilación que muy probablemente harán otras cosas además de solo compilar e implementar (por ejemplo, actualizar archivos de configuración relacionados). En ese caso, usar solo la tarea MSBuild no funcionará. Avíseme si me falta algo. – desigeek

0

En MSBuild 4.0 una opción podría ser la de conditionally import los archivos 3 del proyecto en su ser el despliegue clic MSBuild guión:

<Import Project="ProjectPath1" Condition="'$(DeployUI)'!=''" /> 
<Import Project="ProjectPath2" Condition="'$(DeployWebServices)'!=''" /> 
<Import Project="ProjectPath3" Condition="'$(DeployBackendServices)'!=''" /> 

<Target Name="DeployTheWorld"> 
    <Message Text="Deploying..." /> 
</Target> 

Luego utilizan el AfterTargets feature en los objetivos que desea ejecutar en los archivos de proyecto separadas que ha importado:

<Target Name="DeployUI" AfterTargets="DeployTheWorld"> 
    <Message Text="Hello from DefaultAfterTarget"/> 
    </Target> 

esto le dará flexibilidad en la personalización de la instalación desde dentro TeamCi ty.

Cuestiones relacionadas