2012-02-14 19 views
20

Sto cercando di impostare TeamCity per fare un CI utilizzando .Net e la configurazione di costruire i corridori che ho:Differenze tra Visual Studio (.sln) costruire corridore e MSBuild

  1. Visual Studio (SLN)
  2. MSBuild
  3. Visual Studio 2003

Qual è la differenza? Perché tre build per lavorare sullo stesso tipo di progetto? (? Con l'eccezione del 2003, che è solo per il 2003 credo, perché)

Prendendo il problema, abbiamo questa build corridori per i file .exe:

  1. .NET processo Runner
  2. riga di comando

Il runner di build "Command Line" non funziona con alcun .net assembly? Perché il .Net Process Runner?

risposta

12

Visual Studio (SLN)
Se la soluzione è piccola e non sono tenuti a fare cose di fantasia è possibile utilizzare Visual Studio (SLN) costruire corridore. Fa esattamente la stessa cosa di Project-> Build (dal menu VS). Questa opzione è molto semplice da configurare, pochi clic e il tuo server CI compila la tua soluzione.

MSBuild
Se avete bisogno di fare di più scenari avanzati, a parte la compilazione semplice, come applicare diversi file di configurazione, inserire i valori trasformati in file di configurazione, distribuire i binari, ecc, è necessario selezionare l'opzione MSBuild. Saprai quando devi usarlo, semplicemente perché sln builder non sarà in grado di fare cose. Questa opzione richiede una certa conoscenza del linguaggio di scripting build, che è un task-based e simile a XML.

+1

grazie per la risposta. Visual Studio (sln) usa MSBuild dietro le quinte, no? –

+0

VS può creare alcuni tipi di progetti che MSBuild non può (ad esempio, progetti di installazione). O almeno questa è stata la mia esperienza di VS 2008 - forse è più in sincrono ormai. – Joey

+0

@Acaz Beh, sì, ma è tutto nascosto a te. In realtà usi MSBuild quando lo fai in VS (Project-> Build), ma semplicemente non lo sai. Lo stesso processo qui, per semplicità puoi configurare il tuo CI per compilare subito il progetto. – oleksii

-1

Se si utilizzano i file di soluzione (Visual Studio), ciò significa che è necessario concedere in licenza una copia di Visual Studio per il server di build insieme all'installazione/manutenzione fornita. Se si utilizza MSBuild non è necessario nulla di tutto ciò, tutto ciò che serve sono le installazioni del framework .net. L'unica vera differenza tra i due è che Visual Studio ha tutti i tipi di variabili d'ambiente impostate e utilizza cose come l'ordine di costruzione. Mentre MSBuild non ha alcuna variabile di ambiente impostata per impostazione predefinita, e non riconosce l'ordine di costruzione, si limita a riconginare le dipendenze. Sarà leggermente più facile in Visual Studio e in quei casi non ti imbatterai in quei casi in cui dipendevi dallo studio visivo per coprire un po 'di trascuratezza.

+2

Scusa ma non è quello. Sono protagonista di una build verde utilizzando un '' Visual Studio runner'' su un server in cui ho installato solo '' MSBuild Tools'' e '' Windows SDK'', entrambi prodotti gratuiti che possono essere scaricati dalla MS luogo. – MoonStom

3

Quando si utilizza MSBuild per creare un file .SLN (documento non MSBuild), genera un file MSBuild in memoria che fa riferimento a tutti i progetti da creare nella configurazione specificata e quindi li esegue. Quando usi Visual Studio per creare, stai chiamando DevEnv.com.

Esistono alcuni tipi di progetto (C++ in 2005/2008 e VDPROJ in 2005/2008/2010) che non sono file MSBuild e non possono essere creati utilizzando solo MSBuild. Riceverai un avvertimento di costruzione dicendo che uno o più progetti non erano progetti MSBuild validi e non potevano essere costruiti.

In generale, cerco di mantenere le macchine di costruzione snelle e medie e di installare Visual Studio solo se necessario.

0

Ho notato molto poco tra i due. Nello specifico nella nostra istanza abbiamo dovuto creare un file .vdproj. Ora, dopo aver cercato su Google, dove due runner lo fanno, Command line runner o Visual Studio (sln). Tuttavia, quando si esegue il tipo di runner Visual Studio (sln) abbiamo il seguente errore: "[Avviso] C: \ BuildAgent \ work \ 1bd75058d7bca32b \ POS \ PoSWidgetInstaller \ myInstaller.vdproj.metaproj avviso MSB4078: il file di progetto" myInstaller \ myInstaller .vdproj "non è supportato da MSBuild e non può essere compilato."

E non fallisce se integrato nella soluzione. Penso che il tipo di runner di Visual Studio (sln) estrae i dati dal file sln e li utilizzi con MSbuild. Non sono sicuro che non possa confermare, ma solo i miei pensieri su di esso.

Problemi correlati