Freigeben über


MSBuild@1 – MSBuild v1-Aufgabe

Verwenden Sie diese Aufgabe, um mit MSBuild zu erstellen.

Syntax

# MSBuild v1
# Build with MSBuild.
- task: MSBuild@1
  inputs:
    solution: '**/*.sln' # string. Required. Project. Default: **/*.sln.
    #msbuildLocationMethod: 'version' # 'version' | 'location'. MSBuild. Default: version.
    #msbuildVersion: 'latest' # 'latest' | '17.0' | '16.0' | '15.0' | '14.0' | '12.0' | '4.0'. Optional. Use when msbuildLocationMethod = version. MSBuild Version. Default: latest.
    #msbuildArchitecture: 'x86' # 'x86' | 'x64'. Optional. Use when msbuildLocationMethod = version. MSBuild Architecture. Default: x86.
    #msbuildLocation: # string. Optional. Use when msbuildLocationMethod = location. Path to MSBuild. 
    #platform: # string. Platform. 
    #configuration: # string. Configuration. 
    #msbuildArguments: # string. MSBuild Arguments. 
    #clean: false # boolean. Clean. Default: false.
  # Advanced
    #maximumCpuCount: false # boolean. Build in Parallel. Default: false.
    #restoreNugetPackages: false # boolean. Restore NuGet Packages. Default: false.
    #logProjectEvents: false # boolean. Record Project Details. Default: false.
    #createLogFile: false # boolean. Create Log File. Default: false.
    #logFileVerbosity: 'normal' # 'quiet' | 'minimal' | 'normal' | 'detailed' | 'diagnostic'. Optional. Use when createLogFile = true. Log File Verbosity. Default: normal.
# MSBuild v1
# Build with MSBuild.
- task: MSBuild@1
  inputs:
    solution: '**/*.sln' # string. Required. Project. Default: **/*.sln.
    #msbuildLocationMethod: 'version' # 'version' | 'location'. MSBuild. Default: version.
    #msbuildVersion: 'latest' # 'latest' | '16.0' | '15.0' | '14.0' | '12.0' | '4.0'. Optional. Use when msbuildLocationMethod = version. MSBuild Version. Default: latest.
    #msbuildArchitecture: 'x86' # 'x86' | 'x64'. Optional. Use when msbuildLocationMethod = version. MSBuild Architecture. Default: x86.
    #msbuildLocation: # string. Optional. Use when msbuildLocationMethod = location. Path to MSBuild. 
    #platform: # string. Platform. 
    #configuration: # string. Configuration. 
    #msbuildArguments: # string. MSBuild Arguments. 
    #clean: false # boolean. Clean. Default: false.
  # Advanced
    #maximumCpuCount: false # boolean. Build in Parallel. Default: false.
    #restoreNugetPackages: false # boolean. Restore NuGet Packages. Default: false.
    #logProjectEvents: false # boolean. Record Project Details. Default: false.
    #createLogFile: false # boolean. Create Log File. Default: false.
    #logFileVerbosity: 'normal' # 'quiet' | 'minimal' | 'normal' | 'detailed' | 'diagnostic'. Optional. Use when createLogFile = true. Log File Verbosity. Default: normal.

Eingänge

solution - Project
string. Erforderlich. Standardwert: **/*.sln.

Wenn Sie mehrere Projekte erstellen möchten, geben Sie Suchkriterien an. Sie können einen Platzhalter mit einem Ordner (*) und rekursive Platzhalter (**) verwenden. Beispielsweise sucht **.*proj nach allen MSBuild-Projektdateien (.*proj) in allen Unterverzeichnissen.

Stellen Sie sicher, dass die von Ihnen angegebenen Projekte von dieser Buildpipeline heruntergeladen werden. Auf der Registerkarte "Repository":

  • Wenn Sie TFVC verwenden, stellen Sie sicher, dass das Projekt ein untergeordnetes Element einer der Zuordnungen auf der Registerkarte "Repository" ist.
  • Wenn Sie Git verwenden, stellen Sie sicher, dass sich das Projekt oder Projekt in Ihrem Git-Repository befindet, in einer Verzweigung, die Sie erstellen.

Tipp

Wenn Sie eine Lösung erstellen, wird empfohlen, die Visual Studio-Buildaufgabe anstelle der MSBuild-Aufgabe zu verwenden.


msbuildLocationMethod - MSBuild-
string. Zulässige Werte: version, location (Speicherort angeben). Standardwert: version.


msbuildVersion - MSBuild-Version
string. Wahlfrei. Wird verwendet, wenn msbuildLocationMethod = version. Zulässige Werte: latest, 17.0 (MSBuild 17.0), 16.0 (MSBuild 16.0), 15.0 (MSBuild 15.0), 14.0 (MSBuild 14.0), 12.0 (MSBuild 12.0), 4.0 (MSBuild 4.0). Standardwert: latest.

Wenn die bevorzugte Version nicht gefunden werden kann, wird stattdessen die neueste Version verwendet. Bei einem macOS-Agent wird xbuild (Mono) verwendet, wenn die Version niedriger als 15.0ist.


msbuildVersion - MSBuild-Version
string. Wahlfrei. Wird verwendet, wenn msbuildLocationMethod = version. Zulässige Werte: latest, 16.0 (MSBuild 16.0), 15.0 (MSBuild 15.0), 14.0 (MSBuild 14.0), 12.0 (MSBuild 12.0), 4.0 (MSBuild 4.0). Standardwert: latest.

Wenn die bevorzugte Version nicht gefunden werden kann, wird stattdessen die neueste Version verwendet. Bei einem macOS-Agent wird xbuild (Mono) verwendet, wenn die Version niedriger als 15.0ist.


msbuildArchitecture - MSBuild-Architektur
string. Wahlfrei. Wird verwendet, wenn msbuildLocationMethod = version. Zulässige Werte: x86 (MSBuild x86), x64 (MSBuild x64). Standardwert: x86.

Stellt die MSBuild-Architektur (x86, x64) zur Ausführung bereit.


msbuildLocation - Pfad zu MSBuild-
string. Wahlfrei. Wird verwendet, wenn msbuildLocationMethod = location.

Stellt den Pfad zu MSBuild bereit.


platform - Platform
string.

Tipp

  • Wenn Sie auf eine MSBuild-Projektdatei (.*proj) anstelle einer Lösung abzielen, geben Sie AnyCPU an (kein Leerzeichen).
  • Deklarieren Sie eine Buildvariable wie BuildPlatform auf der Registerkarte "Variablen" (auswählen Allow bei Warteschlangenzeit), und verweisen Sie hier als $(BuildPlatform)darauf. Auf diese Weise können Sie die Plattform ändern, wenn Sie den Build in die Warteschlange stellen und das Erstellen mehrerer Konfigurationen aktivieren.

configuration - Configuration
string.

Tipp

Deklarieren Sie eine Buildvariable wie BuildConfiguration auf der Registerkarte "Variablen" (auswählen Allow bei Warteschlangenzeit), und verweisen Sie hier als $(BuildConfiguration)darauf. Auf diese Weise können Sie die Plattform ändern, wenn Sie den Build in die Warteschlange stellen und das Erstellen mehrerer Konfigurationen aktivieren.


msbuildArguments - MSBuild-Argumente
string.

Gibt zusätzliche Argumente an, die an MSBuild (unter Windows) und xbuild (unter macOS) übergeben werden.


clean - sauberen
boolean. Standardwert: false.

Legen Sie diese Einstellung auf False fest, wenn Sie dies zu einem inkrementellen Build machen möchten. Diese Einstellung kann die Erstellungszeit verringern, insbesondere, wenn ihre Codebasis groß ist. Diese Option hat keine praktische Wirkung, es sei denn, Sie legen auch das Clean Repository auf Falsefest. Legen Sie diese Eigenschaft auf True fest, wenn Sie den gesamten Code in den Codeprojekten neu erstellen möchten. Dies entspricht dem Argument MSBuild /target:clean. Weitere Informationen finden Sie unter Repooptionen


maximumCpuCount - Build in Parallel
boolean. Standardwert: false.

Wenn Ihre MSBuild-Zielkonfiguration mit dem Erstellen parallel kompatibel ist, können Sie diese Eingabe überprüfen, um die /m zu MSBuild (nur Windows) zu übergeben. Wenn Ihre Zielkonfiguration nicht mit dem Erstellen parallel kompatibel ist, kann die Überprüfung dieser Option dazu führen, dass Ihr Build zu file-in-use Fehlern oder zeitweiligen oder inkonsistenten Buildfehlern führt.


restoreNugetPackages - NuGet-Pakete wiederherstellen
boolean. Standardwert: false.

Diese Option ist veraltet. Um NuGet-Pakete wiederherzustellen, fügen Sie vor dem Build eine NuGet- Aufgabe hinzu.


logProjectEvents - Projektdetails aufzeichnen
boolean. Standardwert: false.

Zeichnet optional Zeitachsendetails für jedes Projekt auf (nur Windows).


createLogFile - Protokolldatei erstellen
boolean. Standardwert: false.

Erstellt optional eine Protokolldatei (nur Windows).


logFileVerbosity - protokolldatei verbosity
string. Wahlfrei. Wird verwendet, wenn createLogFile = true. Zulässige Werte: quiet, minimal, normal, detailed, diagnostic. Standardwert: normal.

Gibt die Ausführlichkeit der Protokolldatei an.


Aufgabensteuerungsoptionen

Alle Aufgaben verfügen zusätzlich zu ihren Aufgabeneingaben über Steuerungsoptionen. Weitere Informationen finden Sie unter Steuerelementoptionen und allgemeinen Aufgabeneigenschaften.

Ausgabevariablen

Keiner.

Bemerkungen

Sollte ich die Visual Studio Build-Aufgabe oder die MSBuild-Aufgabe verwenden?

Wenn Sie eine Lösung erstellen, sollten Sie in den meisten Fällen die Visual Studio Build-Aufgabeverwenden. Dieser Vorgang wird automatisch ausgeführt:

  • Legt die /p:VisualStudioVersion-Eigenschaft für Sie fest. Dadurch wird MSBuild gezwungen, eine bestimmte Gruppe von Zielen zu verwenden, die die Wahrscheinlichkeit eines erfolgreichen Builds erhöhen.
  • Gibt das MSBuild-Versionsargument an.

In einigen Fällen müssen Sie möglicherweise die MSBuild Aufgabe verwenden. Beispielsweise sollten Sie es verwenden, wenn Sie Codeprojekte außer einer Lösung erstellen.

Wo erhalte ich weitere Informationen zu MSBuild?

MSBuild-Referenz

MSBuild-Befehlszeilenreferenz

Wie kann ich mehrere Konfigurationen für mehrere Plattformen erstellen?

  1. Stellen Sie auf der Registerkarte "Variablen" sicher, dass Sie Variablen für Ihre Konfigurationen und Plattformen definiert haben. Wenn Sie mehrere Werte angeben möchten, trennen Sie sie durch Kommas. Beispiel:

    • Bei einer .NET-App können Sie BuildConfiguration mit Debug- und Releasewerten angeben, und Sie können BuildPlatform mit jedem CPU-Wert angeben.
    • Bei einer C++-App können Sie BuildConfiguration mit Debug- und Releasewerten angeben, und Sie können BuildPlatform mit beliebigen x86- und x64-Werten angeben.
  2. Wählen Sie auf der Registerkarte "Optionen" MultiConfiguration aus, und geben Sie die Multipliersan, getrennt durch Kommas. Beispiel: BuildConfiguration, BuildPlatform Wählen Sie Parallel aus, wenn Sie die Aufträge (eine für jede Wertekombination) parallel an mehrere Agents verteilen möchten, wenn sie verfügbar sind.

  3. Wählen Sie auf der Registerkarte "Erstellen" diesen Schritt aus, und geben Sie die Argumente Platform und Configuration an. Beispiel:

    • Bahnsteig: $(BuildPlatform)
    • Konfiguration: $(BuildConfiguration)

Kann ich TFSBuild.proj-Dateien erstellen?

Sie können keine TFSBuild.proj Dateien erstellen. Diese Arten von Dateien werden von TFS 2005 und TFS 2008generiert. Diese Dateien enthalten Aufgaben, und Ziele werden nur mit XAML-Buildsunterstützt.

Problembehandlung

Dieser Abschnitt enthält Tipps zur Problembehandlung bei häufig auftretenden Problemen, die ein Benutzer bei der Verwendung der MSBuild-Aufgabe auftreten kann.

Fehler beim Build mit dem folgenden Fehler: Beim Ausführen von MSBuild ist ein interner Fehler aufgetreten.

Mögliche Ursachen
  • Ändern Sie die MSBuild-Version.
  • Probleme mit einer Drittanbietererweiterung.
  • Neue Updates für Visual Studio, die zu fehlenden Assemblys im Build-Agent führen können.
  • Einige der erforderlichen NuGet-Pakete wurden verschoben oder gelöscht.
Vorschläge für die Problembehandlung
Ausführen der Pipeline mit Diagnose zum Abrufen detaillierter Protokolle

Eine der verfügbaren Optionen zur Diagnose des Problems besteht darin, sich die generierten Protokolle anzusehen. Sie können Ihre Pipelineprotokolle anzeigen, indem Sie die entsprechende Aufgabe und den entsprechenden Auftrag in der Zusammenfassung der Pipelineausführung auswählen.

So rufen Sie die Protokolle der Pipelineausführung Abrufen von Protokollen zum Diagnostizieren von Problemen

Sie können auch ein benutzerdefiniertes ausführliches Protokoll einrichten und herunterladen, um Ihre Problembehandlung zu unterstützen:

Zusätzlich zu den Pipelinediagnoseprotokollen können Sie auch diese anderen Arten von Protokollen überprüfen, die weitere Informationen enthalten, um Das Problem zu debuggen und zu lösen:

Versuchen Sie, den Fehler lokal zu reproduzieren

Wenn Sie einen gehosteten Build-Agent verwenden, sollten Sie versuchen, den Fehler lokal zu reproduzieren. Auf diese Weise können Sie einschränken, ob der Fehler das Ergebnis des Build-Agents oder der Buildaufgabe ist.

Führen Sie denselben MSBuild Befehl auf Ihrem lokalen Computer mit denselben Argumenten aus. Weitere Informationen finden Sie MSBuild-Befehl.

Tipp

Wenn Sie das Problem auf Ihrem lokalen Computer reproduzieren können, besteht der nächste Schritt darin, das problem MSBuild zu untersuchen.

Erfahren Sie mehr über von Microsoft gehosteten Agents.

So richten Sie Ihren eigenen selbst gehosteten Agent ein und führen die Buildaufträge aus:

Was kann ich sonst noch tun?

Einige der MSBuild-Fehler werden durch eine Änderung in Visual Studio verursacht, sodass Sie nach Visual Studio Developer Community- suchen können, um festzustellen, ob dieses Problem gemeldet wurde. Wir freuen uns auch über Ihre Fragen, Vorschläge und Feedback.

Anforderungen

Anforderung BESCHREIBUNG
Pipelinetypen YAML, klassischer Build
Läuft auf Agent, DeploymentGroup
Anforderungen Self-hosted agents must have capabilities that match the following anforderungen to run jobs that use this task: msbuild
Funktionen Dieser Vorgang erfüllt keine Anforderungen für nachfolgende Vorgänge im Auftrag.
Befehlseinschränkungen Jegliche
Settable-Variablen Jegliche
Agentversion 1.95.0 oder höher
Vorgangskategorie Bauen

Siehe auch