Domanda

Possibile duplicato:
NAnt o MSBuild, quale scegliere e quando?

Qual è il miglior strumento di creazione per .NETTO?

Attualmente uso NAnt ma solo perché ho esperienza con FormicaMSBuild preferito?

È stato utile?

Soluzione

In realtà utilizziamo una combinazione di NAnt E MSBuild con Regolazione automatica della velocità.NAnt viene utilizzato per il controllo del flusso di script e chiama MSBuild per compilare progetti.Dopo l'attivazione della build fisica, NAnt viene utilizzato per pubblicare gli output della build del singolo progetto in una posizione condivisa.

Non sono sicuro che sia così il migliore processi.Penso che molti di noi siano ancora alla ricerca di un ottimo strumento di costruzione.Una cosa promettente che ho sentito di recente su .NET Rocks, episodio 362, È Per l'amor di James Kovac, un sistema di compilazione basato interamente su PowerShell.Sembra davvero promettente poiché ciò che puoi fare con PowerShell è abbastanza illimitato in teoria.

Altri suggerimenti

Vorrei semplicemente lanciare FinalBuilder nella miscela.Non è gratuito, ma se sei stufo delle modifiche XML file e ne voglio uno un po' più carino (dell'IMO) ambiente in cui lavorare, ci proverei.

Ho lavorato con tutti loro e sono sempre tornato a FinalBuilder.

Esiste un altro nuovo strumento di creazione (un wrapper molto intelligente) chiamato NUBuild.È leggero, open source ed estremamente facile da configurare e fornisce una manutenzione quasi senza intervento.Mi piace molto questo nuovo strumento e lo abbiamo reso uno strumento standard per la creazione e l'integrazione continua dei nostri progetti (abbiamo circa 400 progetti attraverso 75 sviluppatori).Provalo.

http://nubuild.codeplex.com/

  • Interfaccia a riga di comando facile da usare
  • Possibilità di puntare a tutti .NETTO Versioni del framework, cioè 1.1, 2.0, 3.0 e 3.5
  • Supporta la configurazione basata su XML
  • Supporta i riferimenti a progetti e file
  • Genera automaticamente l'elenco di build ordinato completato "per un determinato progetto - nessuna manutenzione del tocco.
  • Capacità di rilevare e visualizzare dipendenze circolari
  • Eseguire la build parallele: decide automaticamente quale dei progetti nell'elenco di build generato può essere costruito in modo indipendente.
  • Capacità di gestire assemblee proxy
  • Fornisce un indizio visivo al processo di build, ad esempio, mostrando "% completato", "stato corrente", ecc.
  • Genera registro di esecuzione dettagliato sia in XML che in formato di testo
  • Facilmente integrabile conCruiseControl.NET Sistema di integrazione continua
  • Può utilizzare un logger personalizzato come xmlogger quando si prendono di mira 2.0 + versione
  • Capacità di analizzare i log degli errori
  • Possibilità di distribuire assemblaggi costruiti sulla posizione specificata dell'utente
  • Capacità di sincronizzare il codice sorgente con il sistema di controllo sorgente
  • Funzionalità di gestione delle versioni

Utilizzo MSBuild completamente per la creazione.Ecco il mio script MSBuild generico che cerca i file .csproj nell'albero e li crea:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
  <UsingTask AssemblyFile="$(MSBuildProjectDirectory)\bin\xUnit\xunitext.runner.msbuild.dll" TaskName="XunitExt.Runner.MSBuild.xunit"/>
  <PropertyGroup>
    <Configuration Condition="'$(Configuration)'==''">Debug</Configuration>
    <DeployDir>$(MSBuildProjectDirectory)\Build\$(Configuration)</DeployDir>
    <ProjectMask>$(MSBuildProjectDirectory)\**\*.csproj</ProjectMask>
    <ProjectExcludeMask></ProjectExcludeMask>
    <TestAssembliesIncludeMask>$(DeployDir)\*.Test.dll</TestAssembliesIncludeMask>
  </PropertyGroup>

  <ItemGroup>
    <ProjectFiles Include="$(ProjectMask)" Exclude="$(ProjectExcludeMask)"/>
  </ItemGroup>

  <Target Name="Build" DependsOnTargets="__Compile;__Deploy;__Test"/>

  <Target Name="Clean">
    <MSBuild Projects="@(ProjectFiles)" Targets="Clean"/>
    <RemoveDir Directories="$(DeployDir)"/>
  </Target>

  <Target Name="Rebuild" DependsOnTargets="Clean;Build"/>

  <!--
  ===== Targets that are meant for use only by MSBuild =====
  -->
  <Target Name="__Compile">
    <MSBuild Projects="@(ProjectFiles)" Targets="Build">
      <Output TaskParameter="TargetOutputs" ItemName="AssembliesBuilt"/>
    </MSBuild>
    <CreateItem Include="@(AssembliesBuilt -> '%(RootDir)%(Directory)*')">
      <Output TaskParameter="Include" ItemName="DeployFiles"/>
    </CreateItem>
  </Target>

  <Target Name="__Deploy">
    <MakeDir Directories="$(DeployDir)"/>
    <Copy SourceFiles="@(DeployFiles)" DestinationFolder="$(DeployDir)"/>
    <CreateItem Include="$(TestAssembliesIncludeMask)">
      <Output TaskParameter="Include" ItemName="TestAssemblies"/>
    </CreateItem>
  </Target>

  <Target Name="__Test">
    <xunit Assembly="@(TestAssemblies)"/>
  </Target>
</Project>

(Scusate se è un po' denso.Sembra che Markdown stia eliminando le righe vuote.)

È piuttosto semplice, però, una volta compresi i concetti e tutte le dipendenze vengono gestite automaticamente.Dovrei notare che utilizziamo file di progetto di Visual Studio, che contengono molta logica incorporata, ma questo sistema consente alle persone di creare in modo quasi identico sia all'interno dell'IDE di Visual Studio che dalla riga di comando e offre comunque la flessibilità di aggiungere cose alla build canonica come il test xUnit che vedi nello script sopra.

L'unico PropertyGroup è il luogo in cui avviene tutta la configurazione e le cose possono essere personalizzate, come escludere determinati progetti dalla build o aggiungere nuove maschere di assieme di test.

ItemGroup è il luogo in cui avviene la logica che trova tutti i file con estensione csproj nell'albero.

Poi ci sono gli obiettivi che la maggior parte delle persone che hanno familiarità con make, nAnt o MSBuild dovrebbero essere in grado di seguire.Se chiami la destinazione Build, chiama __Compile, __Deploy e __Test.La destinazione Clean chiama MSBuild su tutti i file di progetto per pulire le relative directory e quindi la directory di distribuzione globale viene eliminata.Ricostruisci chiama Clean e poi Build.

Rastrello e Albacore è una combinazione eccellente.La potenza di Ruby e niente XML.

.NET Open Source 5 - Automazione .NET con Rake e Albacore di Liam McLennan [Tekpub.com]

Stiamo usando Rimbalzo, un framework per script di compilazione più puliti in C#.

Utilizzo un software commerciale, Studio di creazione automatizzata allo scopo di costruire.

Utilizziamo MSBuild perché abbiamo iniziato con Visual Studio 2005 (ora Visual Studio 2008) e MSBuild era già "integrato" nell'SDK: la manutenzione sul server di build è minore.È un clone di NAnt, in realtà: entrambi gli strumenti sono infinitamente flessibili in quanto ti consentono di creare attività di creazione personalizzate nel codice ed entrambi hanno già creato un discreto set di attività di creazione della comunità.

Utilizzando un linguaggio di scripting dinamico come Python, BOO, Ruby, ecc.creare e mantenere script di build potrebbe essere una buona alternativa a uno basato su XML come NAnt.(Tendono ad essere più facili da leggere rispetto a XML.)

Li ho usati entrambi e li preferisco NAnt.È davvero difficile per me dire che uno sia "migliore" dell'altro.

Dipende anche da Che cosa stai costruendo.IL Libreria attività SDC MSBuild ha un paio di compiti speciali.Ad esempio, per ANNO DOMINI, BizTalk, eccetera.

Ci sono oltre 300 attività incluse in questa libreria, comprese le attività per:Creazione di siti Web, creazione di pool di applicazioni, creazione di utenti ActiveDirectory, in esecuzione FxCop, Configurazione di server virtuali, creazione di file zip, configurazione COM+, creando condivisioni di cartelle, installando in GAC, configurando server SQL, Configurazione di BizTalk 2004 e BizTalk 2006, ecc.

Ho utilizzato sia MSBuild che NAnt e preferisco di gran lunga MSBuild, principalmente perché richiede molta meno configurazione per impostazione predefinita.Anche se puoi complicare eccessivamente le cose e caricare MSBuild anche con un sacco di spazzatura di configurazione, nella sua forma più semplice, puoi semplicemente indirizzarlo a un file di soluzione/progetto e farlo funzionare, il che, nella maggior parte dei casi, è Abbastanza.

UppercuT utilizza NAnt per creare ed è il Build Framework incredibilmente facile da usare.

Costruzioni automatizzate facili quanto (1) nome della soluzione, (2) percorso di controllo del codice sorgente, (3) nome dell'azienda per la maggior parte dei progetti!

http://projectuppercut.org/

Alcune buone spiegazioni qui: UppercuT

In generale, ho l'impressione che NAnt offra maggiore flessibilità rispetto a MSBuild, mentre (con le mie esigenze relativamente semplici) finora mi sono trovato bene con quest'ultimo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top