17 Stimmen

Was ist nAnt und wie kann es mir als C# Entwickler nützlich sein?

Ich kompiliere immer mein Projekt und kopiere die DLLs aus den Abhängigkeitsprojekten in den UI-Bin-Ordner. Nach ein paar Tagen mit 'Kopieren & Einfügen'-Operationen jedes Mal, wenn ich mein Projekt neu kompiliere, habe ich festgestellt, dass ich ein Werkzeug brauche, das dies automatisch für mich erledigt. Nach einigen Recherchen fand ich heraus, dass dieses Werkzeug nAnt ist.

Ich habe nach Informationen gesucht, wie ich anfange es zu benutzen, aber ich habe nicht viel gefunden. Also lautet meine Frage:

  • Was ist nAnt in wenigen Worten?
  • Wie kann ich davon profitieren?

EDIT: Ich kann nicht einfach eine Referenz zu den Abhängigkeitsprojekten hinzufügen, da dies zu einer zirkulären Abhängigkeit führen würde.

15voto

Tony Heupel Punkte 1033

NAnt ist ein Build-Tool, das .NET-Projekte und -Lösungen erstellt (basierend auf dem ursprünglichen Ant für Java). Es handelt sich auch um eine XML-basierte "Skript"-Sprache, mit der Sie "Aufgaben" zur Erledigung der Build-Arbeit anordnen, einschließlich der Arten von Dingen, über die Sie sprechen - und VIEL, VIEL mehr!

Wir verwenden NAnt als unser Build-Skript-Tool (ausgelöst bei jedem Source-Control Check-in durch Cruise Control.NET, auch CCNET genannt, unser Continuous Integration-Tool), um unsere automatisierten Builds durchzuführen. Dazu gehören Dinge wie:

  1. Die Lösung erstellen
  2. Unsere Unit Tests ausführen, um sicherzustellen, dass der Build nicht "kaputt" gegangen ist
  3. Unser Webprojekt auf unseren Entwicklungsserver bereitstellen
  4. Ein Build in einen Build-Ordner zippen und archivieren, um historisches Tracking und "Rückgängigmachen" zu ermöglichen

Eine weitere Lösung ist MSBuild, das tatsächlich von Visual Studio verwendet wird. Es ist sehr ähnlich.

Beachten Sie: Sie können Setup & Deployment-Projekte nicht mit der Lösungs-Aufgabe von NAnt (und auch nicht mit MSBuild) erstellen. Um dies zu umgehen, haben wir begonnen, devenv.com (Visual Studio ohne Benutzeroberfläche) mit Befehlszeilenargumenten auszuführen - unter Verwendung der "exec"-Aufgabe von NAnt anstelle der integrierten "lösung"-Aufgabe -, um die gesamte Lösung zu erstellen, einschließlich Setup & Deployment-Pakete. Wir haben in der Vergangenheit auch WiX und MSBuild verwendet...

Zuletzt, für das spezifische Thema, das Sie beschreiben, sollten Sie wirklich eine dieser Optionen in Betracht ziehen:

  • Fügen Sie einfach die abhängigen Projekte der Web Site-Lösung als Projektverweise hinzu, und Sie erhalten die DLLs automatisch dort
  • Erwägen Sie die Erstellung einer PostBuild-Aufgabe (siehe im Projekt-Eigenschaftenfenster), die bei erfolgreichem Build ein xcopy durchführt

Es ist wirklich keine schlechte Investition, Zeit in NAnt zu investieren, insbesondere wenn die Komplexität Ihres Projekts zunimmt. CCNet kann Ihr Source Control auf Check-ins überwachen oder nächtlich ausgeführt werden, und Sie können abhängige Projekte einrichten, sodass beispielsweise bei erfolgreicher Erstellung Ihres Abhängigkeitsprojekts ein Build Ihrer Website gestartet oder Unit Tests durchgeführt werden, um festzustellen, ob etwas kaputt gegangen ist.

0 Stimmen

VS-Projektdateien basieren größtenteils auf MSBuild, daher müssen Sie, wenn Sie NAnt verwenden, ein NAnt-Skript für die Projekte schreiben oder die Aufgaben erneut an MSBuild delegieren. Die Verwendung von MSBuild direkt ist jetzt immer die einfachere Option. Glücklicherweise haben die Mono-Entwickler eine plattformübergreifende MSBuild-Implementierung erstellt, was NAnt weniger wichtig macht als zuvor.

0 Stimmen

Im Gegenteil! Du kannst falsch liegen, wenn du Zeit in NAnt investierst. MSBuild übernimmt die Funktionalität von NAnt auf eine Weise, die viel kompatibler mit VS.NET ist und mehrere andere Vorteile bietet, die in Kevins Antwort und anderswo aufgelistet sind. Meiner Meinung nach ist jede Zeit, die jetzt mit dem Lernen von NAnt verbracht wird, eine Zeitverschwendung, es sei denn, du musst ein altes NAnt-Bausystem unterstützen.

13voto

Kevin Won Punkte 7056

Microsoft (besser oder schlechter) hat das MsBuild-System erstellt, für das Projektdateien (.csproj, .vbproj usw.) Skripte sind. Diese .proj-Dateien steuern das MsBuild-System über das XML, um das Projekt zu erstellen. Das ist im Grunde genommen das, was auch nAnt tut. Also, im Allgemeinen, entspricht die Funktionalität von MsBuild der Funktionalität von nAnt.

Obwohl ich sicherlich viel mehr Zeit mit MsBuild als mit nAnt verbracht habe und daher keine wirklich experten Meinung habe, von meiner Erfahrung her, wenn Sie Visual Studio verwenden, ist es wahrscheinlich besser, bei MsBuild zu bleiben, um Ihre Projekte zu erstellen, da es höchstwahrscheinlich bereits auf Ihren Entwicklungsprozess abgestimmt ist. Da Sie höchstwahrscheinlich bereits .proj-Dateien verwenden (d.h. .csproj, wenn Sie C# verwenden), macht es für mich keinen Sinn, eine weitere Build-Datei zu erstellen: Verwenden Sie einfach die, die Sie bereits haben, und passen Sie sie nach Bedarf an. Ich bin nicht darüber informiert, dass nAnt zu diesem Zeitpunkt etwas anbietet, das MsBuild nicht kann, außer der Tatsache, dass es besser zum Open Source-Modell passt.

Nochmals, da meine Erfahrung mit nAnt begrenzt ist, kann ich nicht sagen, ob das noch immer zutrifft, aber als ich nAnt das letzte Mal verwendet habe, war es deutlich umfangreicher, um die gleichen Aufgaben zu erledigen im Vergleich zu MsBuild, was, wenn es nach wie vor gültig ist, für mich ein weiterer Grund wäre, statt nAnt lieber MsBuild zu verwenden.

Ihr Bedarf, Binärdateien als Post-Build-Aufgabe abzulegen, ist ein häufiger Bedarf, der mit MsBuild oder nAnt leicht erfüllt werden kann. Aus den genannten Gründen würde ich vorschlagen, zuerst MsBuild zu überprüfen, um zu sehen, wie dies funktionieren würde, und erst dann nAnt in Betracht zu ziehen, wenn MsBuild nicht Ihren Anforderungen entspricht. Ich sage das nur, weil, wie bereits erwähnt, Sie bereits in MsBuild eingetaucht sind (der MsBuild-Engine ist bereits auf Ihrem Computer installiert), warum also nicht den Weg des geringsten Widerstands gehen? Sicherlich, wenn MsBuild nicht das tut, was Sie möchten und nAnt es tut, dann gehen Sie auf diesem Weg. Aber das Kopieren von Dateien wäre etwa 5 Zeilen XML in Ihrer vorhandenen MsBuild-Datei (d.h. .csproj). Hier finden Sie einige Dokumentationen von MSDN: http://msdn.microsoft.com/en-us/library/3e54c37h.aspx

Ein vorheriger Beitrag erwähnte die Verwendung von CruiseControl mit nAnt. Cruise Control kann auch problemlos MsBuild verwenden:

http://ccnetlive.thoughtworks.com/ccnet/doc/CCNET/MsBuild%20Task.html

Wenn Sie also automatisierte (kontinuierliche Integration) Builds möchten, können Sie CC.NET verwenden. MS Team Foundation Server ist eine Alternative zu CC.NET, wenn Sie die Kosten tragen können oder ein Startup sind (über das MS BizSpark-Programm können Sie es glaube ich kostenlos für einige Jahre nutzen).

Ich habe nichts gegen nAnt - es ist nur so, dass es bei dem, was Sie tun möchten, anscheinend nicht erforderlich ist. MsBuild kann es und Sie müssen nichts Neues installieren oder sogar eine Datei erstellen. Sie müssen nur einen etwa 5 Zeilen langen XML-Eintrag in Ihre .proj-Datei einfügen

3voto

Stas Pl Punkte 61

Die Mono Build-Implementierung für MSBuild ist nicht sehr gut. Auch soweit ich weiß, kannst du MSBuild nur zum Kompilieren des Projekts verwenden, und selbst dann werden Setup-Projekte nicht kompiliert - dafür benötigst du tatsächlich devenv. Während du mit Nant deinen Build anpassen kannst: Reinigen der Quellen, Aktualisieren, Kompilieren (mit msbuild oder devenv), Testen mit NUnit, Ncover und allem anderen, was dir einfällt. Also meiner Meinung nach definitiv Nant verwenden.

P.S. Außerdem ist Nant eine sehr unkomplizierte Sprache und sehr einfach zu erlernen.

1voto

codekaizen Punkte 26382

NAnt ist ein automatisiertes Build-Tool, das von Java's Ant abgeleitet ist. Es wird hier gehostet: http://nant.sourceforge.net/.

Sie können es verwenden, um den Bau und das Testen Ihrer Software zu automatisieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X