Frage

Mögliche Duplikate:
NAnt oder MSBuild, die man Sie wählen und Wann?

Was ist der beste build-tool .NET?

Ich verwende derzeit NAnt aber nur, weil ich Erfahrung mit Ant.Ist MSBuild bevorzugt?

War es hilfreich?

Lösung

Wir verwenden tatsächlich eine Kombination von NAnt und MSBuild mit CruiseControl.NAnt ist verwendet für Skript flow control und ruft MSBuild zu kompilieren Projekte.Nach der körperlichen build ausgelöst wird, NAnt-publizieren Sie die einzelnen Projekt-build-Ausgänge an einen freigegebenen Speicherort.

Ich bin nicht sicher, ob dies die besten Prozess.Ich denke, viele von uns sind noch auf der Suche für eine große build-tool.Eine vielversprechende Sache, die ich neulich hörte auf .NET Felsen, episode 362, ist James Kovac ist PSake, ein build-system er basiert komplett auf PowerShell.Es klingt wirklich vielversprechend, da das, was Sie tun können, mit der PowerShell ist ziemlich unbegrenzt in Theorie.

Andere Tipps

Ich möchte nur zu werfen FinalBuilder in den mix.Es ist nicht kostenlos, aber wenn Sie gefüttert sind mit der Bearbeitung von XML Dateien und wollen eine etwas schönere (IMO- ) Umfeld zu arbeiten, ich würde give it a go.

Ich habe mit Ihnen allen, und haben immer ging zurück zu FinalBuilder.

Es gibt eine weitere neue build-tool (eine sehr intelligente wrapper) genannt NUBuild.It ' s lightweight, open-source und sehr einfach zu setup und bietet fast keine-touch-Wartung.Ich mag dieses neue Werkzeug, und wir haben es auf eine standard-tool für die kontinuierliche bauen und integration unsere Projekte (wir haben über 400 Projekte über 75 Entwicklern).Probieren Sie es aus.

http://nubuild.codeplex.com/

  • Einfach zu bedienen, command-line-interface
  • Fähigkeit zur Ziel-alle .NET Rahmen Versionen, 1.1, 2.0, 3.0 und 3.5
  • Unterstützt XML-basierte Konfiguration
  • Unterstützt das Projekt-und Datei - Referenzen
  • Generiert automatisch die “vollständige bestellt build-Liste" für eine bestimmte Projekt – Kein touch-Wartung.
  • Fähigkeit zum erkennen und anzeigen zirkuläre Abhängigkeiten
  • Parallel auszuführen, build - automatisch entscheidet, welche der Projekte in der generierten Liste erstellen kann eigenständig aufgebaut werden.
  • Fähigkeit zum Umgang mit proxy-Baugruppen
  • Bietet einen visuellen Hinweis auf die build - Prozess, für Beispiel, zu zeigen, "% abgeschlossen", "Aktueller status", etc.
  • Generiert detaillierte Ausführungsprotokoll beide im XML-und text-format
  • Leicht integriert mit CruiseControl.NET kontinuierliche integration system
  • Können mithilfe von benutzerdefinierten logger wie XMLLogger bei der Ausrichtung 2.0 + version
  • Fähigkeit zum analysieren von Fehler-Protokollen
  • Möglichkeit zum bereitstellen von integrierten Baugruppen zu vom Benutzer angegebenen Ort
  • Möglichkeit zum synchronisieren von Quell-code mit source-control-system
  • Version management-Fähigkeiten

Ich benutze MSBuild komplett für den Aufbau.Hier ist meine generische MSBuild-Skript, dass die Suche nach dem Baum .csproj-Dateien und baut Sie:

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

(Sorry, wenn es ist ein wenig dicht.Markdown zu sein scheint, entfernen Sie die leeren Zeilen).

Es ist ziemlich einfach, aber sobald Sie verstehen, die Konzepte und alle Abhängigkeiten werden automatisch gehandhabt.Ich sollte beachten Sie, dass wir die Verwendung von Visual Studio-Projekt-Dateien, die haben eine Menge Logik, die in diese integriert, aber dieses system ermöglicht Menschen zu bauen, die fast identisch sowohl innerhalb der Visual Studio-IDE oder über die Befehlszeile und immer noch gibt Ihnen die Flexibilität, Dinge hinzufügen, um den kanonischen bauen wie die xUnit-Tests sehen Sie in dem obigen Skript.

Die eine PropertyGroup ist, wo die Konfiguration geschieht, und die Dinge können individuell angepasst werden, wie das ausschließen bestimmter Projekte aus den bauen, oder das hinzufügen von neuen test-assembly Masken.

Die ItemGroup ist, wo die Logik geschieht, das findet Sie alle .csproj-Dateien in den Baum.

Dann gibt es die Ziele, die die meisten Menschen vertraut machen, nAnt oder MSBuild sollte in der Lage sein zu Folgen.Wenn Sie rufen Sie das Build-Ziel, ruft Sie __Compile __Bereitstellen, und der __ - Test.Im Clean-Ziel Anrufe MSBuild auf alle Projekt-Dateien für Sie zu reinigen Ihre Verzeichnisse und dann die Globale Bereitstellung Verzeichnis gelöscht wird.Rebuild aufruft, Sauber und dann auch Bauen.

Rake und Albacore ist eine hervorragende Kombination.Die macht der Ruby und keine XML.

.NET Open Source 5 - .NET-Automation mit Rechen-und Weißen Thunfisch, der von Liam McLennan [Tekpub.com]

Wir verwenden Bounce, ein Rahmen für Reiniger build-Skripte in C#.

Ich benutze eine kommerzielle software, Automated Build Studio - für den Bau Zweck.

Wir verwenden MSBuild, denn wir begannen mit Visual Studio 2005 (jetzt Visual Studio 2008) und MSBuild war bereits "eingebaute" die SDK - es ist weniger Wartung auf dem build-server.Es ist ein NAnt-Klon, echt - beide tools sind unendlich flexibel, dass Sie Sie erstellen benutzerdefinierte build-Aufgaben in code, und beide haben eine anständige Reihe von community-build-Aufgaben, die bereits erstellt.

Mit einer dynamischen Skriptsprache wie Python, BOO, Ruby, etc.erstellen und pflegen Sie die build-Skripte kann eine gute alternative sein, um eine XML-basierte einer wie NAnt.(Sie neigen dazu, sauberer zu Lesen als XML.)

Ich habe beides verwendet und bevorzugen NAnt.Es ist wirklich schwer für mich zu sagen, dass jemand "besser" ist als die andere.

Es hängt auch davon ab, was man baut.Die MSBuild DEZA Task-Bibliothek hat ein paar spezielle Aufgaben.Für Beispiel, für AD, BizTalk, etc.

Es gibt mehr als 300 Aufgaben im diese Bibliothek einschließlich Aufgaben:die Erstellung von websites, Erstellung von Anwendungspools erstellen ActiveDirectory Benutzer ausgeführt werden FxCop, konfigurieren von virtuellen Servern erstellen zip-Dateien konfigurieren COM+, erstellen Ordner Freigaben, die Installation in der GAC, konfigurieren SQL Server, konfigurieren der BizTalk 2004 und BizTalk 2006, etc.

Ich habe beide MSBuild und NAnt, und ich viel lieber MSBuild, vor allem, weil es erfordert viel weniger als Standardkonfiguration.Sie können zwar über die Dinge zu komplizieren, und laden Sie MSBuild unten mit einer Menge von junk-Konfiguration zu, in seiner einfachsten Form haben, können Sie Spitzen es gerade zu einer Lösung/Projekt-Datei und haben es gehen, die die meisten der Zeit, für die meisten Fällen, ist genug.

UppercuT verwendet NAnt zu bauen, und es ist wahnsinnig einfach zu bedienen Build Framework.

Automatisierte Builds so einfach wie (1) Lösung name, (2) die source-control-Pfad (3) name der Firma, die für die meisten Projekte!

http://projectuppercut.org/

Einige gute Erklärungen hier: UppercuT

Generell habe ich den Eindruck bekommen, dass NAnt bietet mehr Flexibilität im Vergleich zu MSBuild, während die (mit meiner relativ einfache Bedürfnisse) ich habe schon in Ordnung, mit der letzteren so weit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top