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 Eingabeaufforderung

  • den 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>