2009-05-31 14 views
5

Manteniamo un'applicazione di medie dimensioni per Windows sviluppata in vb/C# .net in lavoro. Ancora adesso il processo di compilazione e distribuzione di questa app è manuale. Sono determinato a rendere questo processo automatizzato utilizzando MSBuild su cui non ho ancora nessuna conoscenza.Need primer per un newbie di Msbuild

La nostra app ha una struttura di build semplice, un insieme di progetti già raggruppati in quattro soluzioni (.sln) e solo bisogno di costruire i quattro slns in un ordine. E poi pubblicare un progetto (che fa parte dell'ultima sln da costruire) in una directory. È così. Un processo semplice che sta già consumando 30 minuti di tempo di compilazione manuale e sono abbastanza sicuro che questo può essere realizzato senza l'interferenza manuale usando msbuild almeno il quarto del tempo.

Tutti i miei obiettivi sono stati buoni, ho iniziato a cercare sul Web le risorse di MSBuild per portare a termine il mio processo, ma potrebbe guardarmi intorno molte cose che mi hanno confuso. Hai bisogno di un puntatore o una buona spiegazione su come iniziare e da dove cominciare per il mio semplice scenario. L'aiuto è molto apprezzato.

risposta

5

Sembra uno script molto semplice da scrivere. Anche un file batch farebbe:

msbuild \path\to\first.sln /p:Configuration=Release 
msbuild \path\to\second.sln /p:Configuration=Release 
msbuild \path\to\third.sln /p:Configuration=Release 
msbuild \path\to\fourth.sln /p:Configuration=Release 
call deploy

Naturalmente, molto meglio sarebbe quello di avere un server in esecuzione, dicono CruiseControl.NET, che dà un'interfaccia web in stato di costruzione e la storia.

In MS Build, ci sono due punti di controllo principali per il chiamante: La destinazione e le sue proprietà. La destinazione è cosa compilare, risorse, compilazione, distribuzione, ecc. Le Proprietà controllano come viene costruito quel Target.

È possibile controllare la configurazione utilizzando la proprietà Configurazione (vedere sopra). Se apri i file *. * Proj, noterai gli elementi PropertyGroup. Questi sono impostabili tramite la linea di comando usando il parametro /p arg.

Ecco le specifiche per i due args:

/target:<targets> Build these targets in this project. Use a semicolon or a 
       comma to separate multiple targets, or specify each 
       target separately. (Short form: /t) 
       Example: 
        /target:Resources;Compile 

/property:<n>=<v> Set or override these project-level properties. <n> is 
       the property name, and <v> is the property value. Use a 
       semicolon or a comma to separate multiple properties, or 
       specify each property separately. (Short form: /p) 
       Example: 
        /property:WarningLevel=2;OutDir=bin\Debug\ 
+0

Grazie per la risposta. Ma come faccio a impostare le opzioni di configurazione e tutto? Ad esempio, eseguo il debug dei miei projad di impostazione dell'app in modalità DEbug, ma lo script dovrebbe sempre essere creato in modalità di rilascio. Grazie ancora per la tua risposta veloce. – blntechie

+0

Ho aggiunto dettagli. È tutto abbastanza semplice e vale la pena di padroneggiare. MS Build può automatizzare ** molto **. –

1

Here's a good guide che ha un sacco di grandi informazioni su MSBuild, Continuous Integration e CuriseControl.NET. Sicuramente un buon punto di partenza.