2009-08-21 11 views
9

Lavoro in un piccolo negozio .net dove attualmente costruiamo tutte le nostre soluzioni utilizzando l'IDE di Visual Studio. Vogliamo progredire fino al punto di controllare completamente i nostri script MSBuild per costruire, testare, distribuire, facendo uso delle attività della community di MSBuild, ecc.Come passare alle build automatizzate con Visual Studio?

Suppongo che la mia domanda sia: ciò che sarà diverso in Esperienza di sviluppo di Visual Studio?

Se stiamo creando i nostri file .proj MSBuild, significa che non abbiamo più file .csproj? Come appaiono adesso i progetti in VS?

Mi manca qualcosa di veramente ovvio?

UPDATE Grazie a tutti per aver trovato il tempo di rispondere. Sono a conoscenza di alcuni degli strumenti di sviluppo disponibili: CruiseControl, TeamCity e così via, e anche che i progetti vs (.csproj ecc.) Sono solo file MSBuild. Quello che sto cercando di ottenere è gestire quelle persone che hanno deciso di scrivere i propri script e i propri file .proj. Stanno usando i file VS .csproj proprio come il 'contenitore' per contenere i loro file di codice all'interno dell'IDE? Come attivano le proprie build per sviluppatori? Si accendono semplicemente MSBuild dalla riga di comando? Hai un pulsante su una barra degli strumenti che faccia effettivamente la stessa cosa?

In sintesi, sì, è possibile utilizzare altri strumenti per guidare la build chiamando il file .sln oi file .csproj, ma c'è un altro modo: come funziona?

+1

btw, pollice in su per passare a un processo di compilazione automatizzato! Una volta che lo fai canticchiare, ti chiedi perché l'hai mai fatto manualmente, in primo luogo. –

+0

Uno dei nostri obiettivi era ottenere un processo di rilascio "one-click" (anche se non renderlo attivo).Ora sto solo cercando di capire come fare quel doppio clic :) poiché è così facile innescare accidentalmente una build di rilascio che crea tag ecc. Nel controllo del codice sorgente che devi poi pulire e ripulire. –

+0

Amico, ecco dove voglio arrivare. Come si attivano queste build? –

risposta

1

Grazie a tutti per le vostre risposte, ma con un po 'di ricerca ho trovato alcune idee sui modi per farlo un po' diverso:

  • per estendere il processo di generazione al di là dei vincoli della .sln & .csproj file
  • ma ancora utilizzare Visual Studio
  • e mantenere all'interno del mondo MSBuild il più possibile
  • aggiungendo le funzionalità di server di build quali TeamCity e Hudson dove richiesto
  • ma non essendo affidamento su questi server per la funzionalità che dovrebbe fornire uno script di compilazione.

Quindi quello che ho trovato è: Questo post del blog più vecchio di Scott Hanselman su code organisation. Qui sta usando Nant invece di MSBuild, ma il concetto sottostante è quello di eseguire qualsiasi progetto nant/msbuild che si desidera tramite un file batch .bat.

"In questa directory souce Abbiamo cose come build.bat e buildpatch.bat. L'obiettivo è che la gente può ottenere la roba dal controllo di origine e tipo di generazione e di essere da qualche parte utile. E 'molto confortante per essere in grado di costruire in modo affidabile e semplice un intero sistema. "

Da questo posso vedere che è (ovviamente) ancora utilizzando .sln e Csproj di tenere i suoi file insieme per VS - e posso costruire tramite VS se necessario - ma in realtà fa il suo accumulo tramite il Nant .build file , eseguito tramite .bat.

Questo altro post (anche da Scott Hanselman) mostra come è possibile execute external tools (come MSBuild o un file .bat) da Visual Studio. Così ho creato un file build.bat che assomiglia:

@echo off 
echo Building %1 solution from build.bat 
echo Directory: %~p1 
C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe %~f1 %2 

(ho ottenuto il funky ~ p ~ e modificatori di parametri f dal here;% ~ f1 espande la MySolution.sln per il percorso completo di SLN) ;-)

ho quindi impostare il Visual Studio "Strumenti esterni" di dialogo in modo che: - comando è "build.bat" - argomenti è "$ (solutionFileName)/v: m" - la directory iniziale è "& (SolutionDir)"

E ho quindi aggiunto un pulsante alla barra degli strumenti per eseguirlo. Posso andare oltre per mappare il tasto F5 per eseguire questo, piuttosto che la versione standard di Visual Studio.

In ogni caso, queste sono solo alcune idee (certamente dal cervello di qualcun altro!) Ma mi danno più informazioni sulle build e su come possono essere fatte. Ci sono alcune limitazioni (come gli errori non verranno visualizzati nella finestra Elenco errori), ma sono sicuro che questo può essere superato, se necessario.

Ho intenzione di fare un tentativo e vedere cosa posso ottenere su MSBuild da solo, e poi anche provare ad agganciare Hudson e vedere cosa cucina! :-)

A proposito, se qualcuno sta ancora leggendo a questo punto e ha un'opinione sul fatto che il materiale che ho presentato nella mia risposta sia buono/cattivo/giusto/sbagliato/eccessivo/obsoleto/imperfetto/qualunque cosa, sentitevi liberi di presentare la vostra opinione.

Bello, Pete.

+0

A proposito: mi rendo conto che in realtà non ho * bisogno * di fare queste cose - posso semplicemente fare quello che James e gli altri hanno suggerito. Voglio solo scoprire da solo ciò che mi sento più a mio agio. –

6

Utilizziamo msbuild per creare build automatici e puoi semplicemente puntare msbuild al tuo file di soluzione senza alcuna modifica.

Inoltre, per chiarire, utilizziamo anche un server di build automatizzato (Hudson con plugin .Net) che utilizza msbuild per automatizzare il processo.

+1

E complimenti per passare a un processo di compilazione automatizzato :-) – jamesaharvey

+0

Questo è esattamente quello che facciamo anche noi. MSBuild attraverso Hudson e funziona * magnificamente *. –

+0

Quindi stai usando Hudson per eseguire il tuo file di soluzione? Cosa fare se si desidera eseguire attività aggiuntive (zip/creare directory virtuale IIS, ecc. Ecc.)? Come lo inseriresti nel tuo script di compilazione? –

2

Si dovrebbe guardare CruiseControl.NET invece di eseguire il proprio processo di compilazione e configurazione automatica. Rende molto più semplice e può fare cose extra come correre fino a test o strumenti di copertura del codice o qualsiasi altra cosa come parte del processo di costruzione.

+0

Ho sempre avuto l'impressione che CruiseControl fosse qualcosa che si eseguiva sul server di build su base regolare/giornaliera/settimanale/continua. Non lo stai utilizzando per le build di compilazione/test giornaliere specifiche per sviluppatori? –

+0

@Pete: Sì, hai ragione su questo. Il trigger per la build è regolabile, ovviamente (di solito al momento del check-in), ma non è uno strumento desktop per sviluppatori (che io sappia). –

2

cosa sarà diverso nell'esperienza di sviluppo di Visual Studio?

Niente, in genere. Infatti, se lo stai facendo bene, questo dovrebbe essere trasparente; il tuo IDE non dovrebbe preoccuparsi di quale build manager usi. Ecco perché soluzioni come CruiseControl.NET e Hudson sono belle.

Se stiamo creando i nostri file .proj MSBuild, significa che non abbiamo più file .csproj? Come appaiono adesso i progetti in VS?

La struttura della soluzione rimane la stessa. In Visual Studio, soluzioni e progetti fanno il doppio lavoro come guida per l'organizzazione di progetti/packaging e come convenienza per l'IDE. Il tuo direttore di produzione lo introspezionerà per capire cosa deve essere costruito.

+0

Grazie Giovanni. Dovrò guardare in Hudson. –

2

Esistono diversi strumenti per la creazione automatica e continua che si basano su MSBuild.I file di progetto C# già SONO file MSBuild - così, in realtà, dal momento che VS2005, hai utilizzato MSBuild sulla workstation locale per creare il vostro costruire - non si potrebbe avere conosciuto su di esso :-)

Oltre CruiseControl NET (citato da JP), che è sicuramente la pena dare un'occhiata, vi consiglio anche altri due prodotti:

  • FinalBuilder Server che sembra essere quasi sconosciuto alla stragrande maggioranza degli sviluppatori (ma merita sicuramente più attenzione ! Strumento eccellente). Hanno anche una versione desktop stand-alone FinalBuilder se è qualcosa che potrebbe essere necessario. Non è gratuito - ma a $ 100 per un utente (e $ 450 per 5), non è davvero una spesa enorme

  • TeamCity di JetBrains - anche noto per il loro prodotto Resharper nel mondo .NET - che offre un Pro gratuito versione per le squadre fino a 20 utenti/costruire piani, e una versione Enterprise molto più costoso, se sei cresciuto :-)

Rispetto al CruiseControl.NET, entrambi offrono simpatica, amichevole interfaccia grafica di entrambi per configurare il costruisce, oltre a monitorarli.

E come ho detto, entrambi si basano sul progetto esistente e sulla struttura del file di soluzione, quindi non è necessario modificare nulla.

Non si può davvero sbagliare con l'integrazione continua! Non ho potuto fare a meno le valutazioni accumulo immediato più ......

Marc

+0

L'edizione enterprise non è così costosa se sei cresciuto abbastanza per usarlo. –

+0

Grazie Marc. Ti farò la stessa domanda che ho chiesto a James sopra: Cosa succederebbe se volessi svolgere attività aggiuntive (zip/creare directory virtuale IIS, ecc. Ecc.)? Come lo inseriresti nel tuo script di compilazione? –

+0

Sia FinalBuilder che TeamCity hanno queste attività aggiuntive disponibili. Il tuo file di soluzione descrive come costruire la soluzione e i suoi progetti - ulteriori passaggi sono nei tuoi script di CI. Puoi comprimere l'output, copiarlo su una condivisione o su un server FTP, avviare una VM ed eseguire l'installazione e qualsiasi altra cosa tu possa sognare! Questi comandi sono nello script Finalbuilder o TeamCity - * not * nei file di soluzione/progetto. –

1

Usiamo TeamCity sul lavoro; abbiamo iniziato con CruiseControl.NET ma siamo passati quando un altro sviluppatore mi ha indicato che avrei mantenuto la configurazione di cc per sempre altrimenti. ;) Seriamente, TeamCity è molto facile da imparare e da usare.

Ho fatto domande simili quando ho sentito per la prima volta dell'integrazione continua. Devi riscrivere (e mantenere) tutte le soluzioni e i progetti a mano? Hai bisogno di imparare i comandi di MSBuild? La risposta breve è No.

Come menzionato da Harvey, puoi semplicemente chiamare MSBuild su una soluzione o un file di progetto creato da VS e lo costruirà per te. TeamCity gestirà questo automaticamente.

Se si desidera maggiore flessibilità, si consiglia di NAnt. Ho lavorato con script MSBuild codificatori a mano, ed è un esercizio di frustrazione. NAnt ha una sintassi più pulita e (per me) è più facile da usare e leggere. Usiamo NAnt per le cose fantasiose e (di nuovo) chiamiamo MSBuild di NAnt quando vogliamo costruire un progetto o una soluzione. TeamCity supporta NAnt.

Per riassumere, per noi nulla è cambiato in Visual Studio. Creiamo e manteniamo i nostri progetti e soluzioni allo stesso modo. Quando li controlliamo nel controllo del codice sorgente (TFS), TeamCity lo preleva automaticamente, crea le soluzioni ed esegue i nostri test (NUnit). Disponiamo anche di configurazioni di implementazione con un solo clic (in TeamCity che utilizza NAnt).

+0

Cool - grazie per quello Will. Mi sono umiliato e aahhed sul fatto di percorrere la rotta Nant o MSBuild. So che alcuni fanno capolino là fuori come te che dicono che Nant è più "a suo agio" per le cose fantasiose, ma non so se riuscirò a farmi imparare a quel livello. Inoltre, tra un po 'di tempo probabilmente starò facendo tutte queste cose su IronRuBy con Rake o qualcosa del genere! ;-) –

+0

In realtà, con il moderno software di build CI, spesso non è necessario scrivere script di fantasia. Sono solo un altro strumento nella tua casella degli strumenti. – TrueWill

Problemi correlati