2011-01-10 13 views
1

Es ist möglich, MSBuild zu verwenden, um Out-of-Source-Builds zu erstellen: ein Build außerhalb des Quellverzeichnisses?msbuild, Unterstützung für Out-of-Source-Builds

Dies ist eine Standard-Sache in einigen anderen Gebäudesystemen, wie der Autotools oder CMake. Sie sind nützlich, wenn Sie mit Build-Optionen experimentieren oder einen Quellbaum teilen möchten (der sehr groß sein kann).

Für diejenigen, die fragen, warum solche Dinge benötigt werden: Damit könnte ich einen Checkout (4GB hier) machen, einen Build machen, zu einer bestimmten Revision zurückkehren und einen weiteren Build machen, ohne den ersten wegzuwerfen. Oder ich kann eine Wegwerf-Konfiguration mit einigen benutzerdefinierten Einstellungen erstellen, ohne viel über alle Konfigurationseinstellungen in VS nachzudenken. Oder teilen Sie einen Checkout zwischen mehreren automatischen Buildern.

Ich weiß, dass ich separate Konfigurationen mit unterschiedlichen Pfaden definieren kann, aber dies ist mühsam (besonders wenn mit mehreren Projekten gearbeitet wird) und diese Konfigurationen werden an andere Entwickler (die ich beim Experimentieren vermeiden möchte) mit gängigen VCS-Operationen weitergeben.

+0

Es ist nicht ganz klar, was "außerhalb des Quellverzeichnisses" bedeutet. Bitte beschreiben Sie Ihr Szenario und was Sie tatsächlich erwarten. – Filburt

+0

@Filburt, bearbeitet. – liori

Antwort

0

Eine mögliche Lösung könnte darin bestehen, Ihre Konfigurationsdateien in eine separate .target-Datei zu verschieben. Wenn Sie mit diesen experimentieren möchten, können Sie die .target-Datei durch eine Ihrer Wahl ersetzen, während andere Entwickler die standardmäßige .target-Konfiguration verwenden können.


Ich bin immer noch nicht sicher, ob und warum Ihre Quellen ein Problem sind, da Sie würde sie zu einem konfigurierbaren Erstellungspfad exportieren. Liegt es daran, dass es zu lange dauert, Ihre Quellen zu einem experimentellen Build-Standort zu exportieren? Könnten Sie vorgefertigte gemeinsame Komponenten für Ihren experimentellen Build verwenden?


Ich vermute, dass Sie Einschränkungen sind expiriencing weil Sie MSBuild wie CLI für Visual Studio-Lösung (en). Zugegebenermaßen erfordert MSBuild erhebliche Anstrengungen, um flexible und komplexe Anforderungen zu erfüllen. Vielleicht ist ein Continous Integration System wie CruiseControl (um nur eines zu nennen) das, wonach Sie suchen, denn es bietet Ihnen Benutzerfreundlichkeit und Flexibilität, die Sie von Autotools und CMake gewohnt sind. Wenn "frei" keine Ihrer Anforderungen ist, kann Team Foundation Server eine Option sein, um MSBuild für Sie zu steuern.

4GB Quellen ist riesig, also wird jedes gegebene Werkzeug umherarbeiten müssen, um so viele Sachen zu bewegen, um schnell zu bleiben.

+0

Also funktioniert das nicht out of the box, und ich müsste die Projektdateien hacken? Leider können sowohl autotools als auch cmake das standardmäßig tun. – liori

+0

@liori Es ist immer noch schwer vorstellbar, wo Ihre spezifischen Probleme herkommen. Soweit ich aus den Informationen zu Autotools und CMake eingeholt habe, können Sie einen benutzerdefinierten Build- und/oder Ausgabestandort angeben. – Filburt

+0

Es ist nur eine Art von Flexibilität, die ich von einem Build-System erwarte. Zum Beispiel kann ich einen Checkout (4GB hier) machen, einen Build machen, zu einer bestimmten Revision zurückkehren und einen anderen Build erstellen, ohne den ersten zu verwerfen. Oder ich kann eine Wegwerf-Konfiguration mit einigen benutzerdefinierten Einstellungen erstellen, ohne viel über alle Konfigurationseinstellungen in VS nachzudenken. – liori