Training
Modul
Beschreiben von Pipelines und Parallelität - Training
Beschreibung von Pipelines und Gleichzeitigkeit
Dieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
MSBuild kann Systeme nutzen, die über mehrere Prozessoren oder Prozessoren mit mehreren Kernen verfügen. Für jeden verfügbaren Prozessor wird ein separater Buildprozess erstellt. Wenn das System zum Beispiel über vier Prozessoren verfügt, werden vier Buildprozesse erstellt. MSBuild kann diese Builds gleichzeitig verarbeiten und daher die Gesamtbuildzeit verringern. Das gleichzeitige Erstellen von Builds führt jedoch zu einigen Änderungen bei Buildprozessen. In diesem Thema werden diese Änderungen erläutert.
Wenn die Microsoft-Build-Engine einen Projekt-zu-Projekt-Verweis (P2P) ermittelt, während parallele Builds zum Erstellen eines Projekts verwendet werden, wird der Verweis nur einmal erstellt. Wenn zwei Projekte über den gleichen P2P-Verweis verfügen, wird der Verweis nicht für jedes Projekt neu erstellt. Stattdessen gibt die Build-Engine den gleichen P2P-Verweis an beide Projekte zurück, die davon abhängen. Zukünftige Anforderungen in der Sitzung für das gleiche Ziel erhalten den gleichen P2P-Verweis.
Die Zykluserkennung funktioniert genauso wie bei MSBuild 2.0, mit der Ausnahme, dass MSBuild nun Berichte über die Erkennung eines Zyklus zu einem anderen Zeitpunkt oder im Build erstellen kann.
Bei der parallelen Builderstellung können Fehler und Ausnahmen zu einem anderen Zeitpunkt auftreten als bei der nicht parallelen Builderstellung; außerdem kann die Erstellung eines anderen Builds fortgesetzt werden, wenn ein Build nicht erstellt werden kann. MSBuild beendet keinen Projektbuild, der parallel mit einem fehlerhaften Build ausgeführt wird. Der Buildprozess anderer Projekte wird fortgesetzt, bis er erfolgreich abgeschlossen oder fehlgeschlagen ist. Wenn jedoch ContinueOnError aktiviert wurde, wird die Erstellung von Builds nicht abgebrochen, auch wenn ein Fehler auftritt.
Sowohl C++-Projekt- als auch -Projektmappendateien ( .vcxproj und .sln) können an die MSBuild-Aufgabe übergeben werden. Für C++-Projekte wird VCWrapperProject aufgerufen, und anschließend wird das interne MSBuild-Projekt erstellt. Für C++-Projektmappen wird SolutionWrapperProject, und anschließend wird das interne MSBuild-Projekt erstellt. In beiden Fällen wird das resultierende Projekt auf die gleiche Weise behandelt wie jedes andere MSBuild-Projekt.
Bei fast allen buildbezogenen Aktivitäten ist es erforderlich, dass das aktuelle Verzeichnis während des Buildprozesses gleich bleibt, um pfadbezogene Fehler zu vermeiden. Aus diesem Grund können Projekte in MSBuild nicht in verschiedenen Threads ausgeführt werden, weil dies zur Erstellung mehrerer Verzeichnisse führen würde.
Um dieses Problem zu vermeiden, aber immer noch Multi-Prozessor-Builds zu aktivieren, verwendet MSBuild "Prozessisolation". Mithilfe der Prozessisolation kann MSBuild maximal n
Prozesse erstellen, wobei n
die Anzahl der auf dem System verfügbaren Prozessoren gleich ist. Wenn MSBuild zum Beispiel eine Projektmappe auf einem System mit zwei Prozessoren erstellt, werden nur zwei Buildprozesse erstellt. Diese Prozesse werden zum Erstellen aller Projekte der Lösung wiederverwendet.
Training
Modul
Beschreiben von Pipelines und Parallelität - Training
Beschreibung von Pipelines und Gleichzeitigkeit
Dokumentation
Paralleles Erstellen von mehreren Projekten mit MSBuild - MSBuild
Erkunden Sie die MSBuild-Einstellungen, mit denen Sie durch eine parallele Ausführung in Visual Studio schneller mehrere Projekte erstellen können.
Diagnostizieren und Beheben von Racebedingungen in Builds - MSBuild
Hier erfahren Sie, wie Sie Racebedingungen in Ihren parallelen MSBuild-Builds diagnostizieren und beheben.
Behandeln von MSBuild-Problemen und Erstellen von Protokollen - Visual Studio (Windows)
Hier erfahren Sie, wie Sie Buildprobleme in Ihrem Visual Studio-Projekt diagnostizieren und ggf. ein Protokoll erstellen können, das zur Untersuchung an Microsoft gesendet wird.