Frage

Kann mir jemand erklären, welche Vorteile gibt es ein Tool wie MSBuild (oder NAnt) zur Verwendung einer Sammlung von Projekten zu bauen im Vergleich zu devenv.exe von der Kommandozeile aus?

Ein Kollege mit denen ich in der Vergangenheit gearbeitet habe, erklärt, dass (zumindest mit älteren Versionen von Visual Studio) mit Devenv.exe war viel langsamer als die anderen Techniken, aber ich habe keine Beweise für das, oder wenn die jetzt ein strittiger Punkt ist nun, dass beginnend mit 2005, Visual Studio verwendet MSBuild unter der Haube.

Ich kenne einen Vorteil der Verwendung von MSBuild ermöglicht es Ihnen, Ihre Projekte zu bauen, ohne Visual Studio zu erfordern auf den Build-Maschinen installiert werden, aber ich war nicht sicher, ob es andere waren.

War es hilfreich?

Lösung

Ein Grund dafür ist, weil es ein Produkt für den Aufbau viel mehr ist als nur es zu kompilieren. Aufgaben wie das Erstellen von Installationen, Versionsnummern zu aktualisieren, wodurch escrows, die letzten Pakete verteilen usw. viel leichter sein, weil von dem, was diese Tools (und ihre Erweiterungen) bieten.

Während Sie dies alles mit regelmäßigen Skripten tun konnte, mit NAnt oder MSBuild geben Ihnen einen soliden Rahmen für das Tun dies alles. Es gibt eine Menge von Community-Support für beide, einschließlich zusätzlichen Aufgaben, die (wie der MSBuild Community-Aufgaben Projekt heruntergeladen werden können ). Dazu gibt es noch Unterstützung für sie in zahlreichen Dritten und Open-Source-Produkten.

Wenn Sie nur daran interessiert sind bei der Zusammenstellung (und nicht den gesamten Build-Prozess), können Sie eine Zeitersparnis profitieren von MSBuild ist die Unterstützung für den Aufbau mit mehreren Prozessoren .

Andere Tipps

Die offensichtliche Antwort von meinem Team ist, dass nicht all Visual Studio installiert ist , insbesondere wir nicht installieren Visual Studio auf unser Build / CI-Server.

Der Hauptgrund für ein externes Build-Tool wie NAnt oder MSBuild ist die Möglichkeit, Ihren Build-Prozess zu automatisieren und somit kontinuierliche Rückmeldung über den Status Ihres System zur Verfügung stellen. Auch sie können für viele Dinge verwendet werden, neben einem „reinen“ bauen und das ist, wo man wirklich von ihnen zu bekommen Wert beginnen, ist es eine extrem wertvolle Sache der Lage sein, Ihre Anwendung mit einem einzigen Befehl zu bauen und zu testen.

Du kannst auch Sachen wie Sammlung von Metriken, packinging von Release-Binärdateien und allerlei nette Sachen wie das Hinzufügen.

Soweit C # geht, läuft devenv.exe 2005 die Compiler in-proc, die aus dem Speicher Ausnahme für beträchtliche Lösungen führen können. Msbuild resorts für jedes Projekt csc.exe Prozess zu starten. Projekte, die mit devenv / bauen nicht gut funktionieren mit msbuild kompilieren. Hoffe, dass Sie aus diesem Grund mögen.

Wir experimentieren von devenv zu einem Werkzeug mit Schalt (Visual Build-Pro), die MsBuild unter der Haube verwendet und wir haben ein „Verweis auf Montage erforderlich‚System.Drawing ...“Fehler für ein Projekt, das nicht braucht sich sie und die in Visual Studio fein baut.

Wir haben ein großes System, bestehend aus C #, Managed C ++, und den guten alten nicht verwaltete C ++ Baugruppen / DLLs. Es ist C ++ Code, der auf verwalteten C ++ Code abhängt, die von C # -Code abhängt, die von Managed C ++ Code abhängt, die auf einfachen alten C ++ Code abhängt (puh!). Als wir vor ein paar Jahren unsere automatisierte Build-Umgebung wurden die Einrichtung vor entdeckten wir, dass MSBuild.exe nicht richtig alle Abhängigkeiten behandeln hat, die wir haben.

mit Microsoft konnten wir einige der Probleme lösen, aber nicht alle von ihnen. Wenn mich mein Gedächtnis dient, könnten wir nie den C # Baugruppen erhalten, die auf verwalteten C ++ DLLs abhängig zu bauen. So dass wir schließlich einen benutzerdefinierte Build-Skript bilden, die devenv.exe von der Kommandozeile aufgerufen und es funktionierte gut.

Natürlich, die mit VS2005 war, könnte es nun behoben werden, aber das Skript noch funktioniert, so dass wir das Problem nicht neu aufgelegt.

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