2009-07-31 5 views
5

Ho 3 script MSBUild per la distribuzione, 1 per la distribuzione dell'interfaccia utente 1 per la distribuzione di un paio di servizi Web. 1 per la distribuzione di servizi di back-end.Come si chiamano più script MSBuild da uno script MSBuild

Ora vorrei creare uno script MSBuild di distribuzione con un clic, che chiamerebbe tutti i 3 script precedenti, che possono essere eseguiti da un server TeamCity.

Quindi, come posso chiamare questi tre script MSBuild da uno script MSBuild diverso.

risposta

7
+1

Uno snippet di codice sarebbe fantastico. – Pat

+0

Ci sono un sacco di frammenti di codice sulla pagina che ho collegato, più di quello che potrebbe contenere questo post;) – OregonGhost

0

Non ho usato TeamCity Server, ma una possibile soluzione alternativa è combinare i tre script di compilazione in uno script. E metti i compiti dei tre script separati in obiettivi separati nel file di costruzione principale. Quindi, invece dei tre script di compilazione separati, hai uno script di build con tre target, ovvero deployUI, deployServices, deployBackend. campione testato qui sotto:

<?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

Questa è un'opzione valida per unire tutti e 3 i componenti, ma voglio la possibilità di distribuire i componenti in modo indipendente se scelgo di , non si vuole duplicare il contenuto dello script di build in due script. – Pradeep

+0

È possibile distribuire i componenti singolarmente utilizzando le istruzioni condizionali all'interno del file di build. Se si utilizzano le istruzioni condizionali, non è necessario mantenere i file di script duplicati. basta fornire il target corretto mentre si chiama il file di build e il gioco è fatto. – desigeek

+0

Sidenote: Non sono sicuro di come la risposta accettata sia d'aiuto? Nell'attività menzionata non vedo un modo per chiamare i file di build/script che è quello che le tue domande richiedono. L'attività MSBuild ti permette di costruire progetti con alcune opzioni, ma tu volevi creare usando i file di costruzione che molto probabilmente faranno altre cose oltre alla semplice compilazione e distribuzione (ad esempio l'aggiornamento dei file di configurazione correlati). In tal caso, l'utilizzo della sola attività MSBuild non funzionerà. Fammi sapere se mi manca qualcosa. – desigeek

0

In MSBuild 4.0 un'opzione potrebbe essere quella di conditionally import i 3 file di progetto nel tuo una distribuzione clic MSBuild script:

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

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

quindi utilizzare il AfterTargets feature sugli obiettivi che si desidera eseguire nei file di progetto separati importati:

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

Questo vi darà flessibilità nella personalizzazione della distribuzione dall'interno di TeamCi ty.