Paralleles Erstellen von mehreren Projekten mit MSBuild
Sie können MSBuild verwenden, um mehrere Projekte schneller zu erstellen, indem Sie sie parallel ausführen. Um Builds parallel auszuführen, verwenden Sie die folgenden Einstellungen auf einem Mehrkern- oder Mehrprozessorcomputer:
den Schalter
-maxcpucount
in einer Eingabeaufforderungden BuildInParallel-Aufgabenparameter in einer MSBuild-Aufgabe
Hinweis
Der Schalter -verbosity (-v) in einer Befehlszeile kann die Buildleistung ebenfalls beeinflussen. Die Buildleistung verringert sich möglicherweise, wenn die Ausführlichkeit der Buildprotokollinformationen auf die Einstellung "Detailliert" oder "Diagnose" festgelegt ist, die beide für die Problembehandlung verwendet werden. Weitere Informationen finden Sie unter Erhalten von Buildprotokollen und Befehlszeilenreferenz.
-maxcpucount-Schalter
Wenn Sie den Schalter -maxcpucount
oder die kurze Form -m
verwenden, kann MSBuild die angegebene Anzahl von MSBuild.exe-Prozessen erstellen, die parallel ausgeführt werden können. Diese als „Arbeitsprozesse“ bekannten Prozesse verwenden einen anderen Kern oder Prozessor, soweit verfügbar, um ein Projekt in der gleichen Zeit zu erstellen, in der andere verfügbare Prozessoren andre Projekte erstellen könnten. Wenn Sie zum Beispiel diesen Schalter auf den Wert "4" festlegen, erstellt MSBuild vier Arbeitsprozesse zum Erstellen des Projekts.
Wenn Sie den Schalter -maxcpucount
verwenden, ohne einen Wert anzugeben, verwendet MSBuild alle Prozessoren des Computers.
Weitere Informationen über diesen Schalter, der in MSBuild 3.5 eingeführt wurde, finden Sie unter Befehlszeilenreferenz.
Das folgende Beispiel weist MSBuild an, drei Arbeitsprozesse zu verwenden. Wenn Sie diese Konfiguration verwenden, kann MSBuild drei Projekte gleichzeitig erstellen.
msbuild.exe myproj.proj -maxcpucount:3
Aufgabenparameter „BuildInParallel“
BuildInParallel
ist ein optionaler boolescher Parameter für eine MSBuild-Aufgabe. Wenn BuildInParallel
auf true
(der Standardwert ist true
) festgelegt ist, werden mehrere Arbeitsprozesse zum gleichzeitigen Erstellen so vieler Projekte wie möglich erzeugt. Damit dies ordnungsgemäß funktioniert, muss der Schalter -maxcpucount
auf einen Wert festgelegt werden, der größer als 1 ist.
Das parallele Erstellen funktioniert nur für einen einzelnen Aufruf der MSBuild-Aufgabe. Wenn Sie also die Aufgabenbatchverarbeitung aufrufen, ist die Parallelität auf den jeweiligen Batch beschränkt. Weitere Informationen finden Sie unter MSBuild-Batchverarbeitung.
Das folgende Beispiel zeigt, wie Sie ein Ziel in einer Projektdatei mit mehreren verschiedenen Eigenschaftswerten parallel mithilfe des BuildInParallel
-Parameters erstellen.
Hier sehen Sie die Projektdatei do_it.proj
mit einem Ziel, das einfach nur eine andere Nachricht für jede SourceValue
-Eigenschaft druckt:
<Project>
<Target Name="DoIt">
<Message Text="For this invocation SourceValue='$(SourceValue)'" Importance="High" />
</Target>
</Project>
Das folgende Projekt erstellt parallel das angegebene Ziel DoIt
in do_it.proj
, wobei die Elementliste und AdditionalProperties
-Metadaten verwendet werden, um unterschiedliche Werte der Eigenschaft SourceValue
anzugeben.
<Project>
<ItemGroup>
<_Project Include="do_it.proj" AdditionalProperties="SourceValue=Test1" />
<_Project Include="do_it.proj" AdditionalProperties="SourceValue=Test2" />
<_Project Include="do_it.proj" AdditionalProperties="SourceValue=Test3" />
<_Project Include="do_it.proj" AdditionalProperties="SourceValue=Test4" />
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(_Project)" Targets="DoIt" BuildInParallel="true" />
</Target>
</Project>