Freigeben über


MSBuild@1: MSBuild v1-Aufgabe

Verwenden Sie diese Aufgabe für die Erstellung mit MSBuild.

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.
# 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.

Eingaben

solution - Projekt
string. Erforderlich. Standardwert. **/*.sln.

Wenn Sie mehrere Projekte erstellen möchten, geben Sie Suchkriterien an. Sie können einen Platzhalter für einzelne Ordner (*) und rekursive Platzhalter (**) verwenden. Sucht beispielsweise **.*proj nach allen MSBuild-Projektdateien (.*proj) in allen Unterverzeichnissen.

Vergewissern Sie sich, dass die von Ihnen angegebenen Projekte von dieser Buildpipeline heruntergeladen werden. Auf der Registerkarte „Repository“:

  • Vergewissern Sie sich bei Verwendung von TFVC, dass das Projekt ein untergeordnetes Element einer der Zuordnungen auf der Registerkarte „Repository“ ist.
  • Vergewissern Sie sich bei Verwendung von Git, dass sich das Projekt oder die Projektmappe innerhalb des Git-Repositorys in einer Verzweigung befindet, die erstellt wird.

Tipp

Wenn Sie eine Projektmappe erstellen, wird empfohlen, den Visual Studio-Buildtask anstelle der MSBuild-Aufgabe zu verwenden.


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


msbuildVersion - MSBuild-Version
string. Optional. Verwenden Sie , 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 gefundene Version verwendet. Auf einem macOS-Agent wird (Mono) verwendet, xbuild wenn die Version niedriger als 15.0ist.


msbuildVersion - MSBuild-Version
string. Optional. Verwenden Sie , 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 gefundene Version verwendet. Auf einem macOS-Agent wird (Mono) verwendet, xbuild wenn die Version niedriger als 15.0ist.


msbuildArchitecture - MSBuild-Architektur
string. Optional. Verwenden Sie , wenn msbuildLocationMethod = version. Zulässige Werte: x86 (MSBuild x86), x64 (MSBuild x64). Standardwert. x86.

Stellt die auszuführende MSBuild-Architektur (x86, x64) bereit.


msbuildLocation - Pfad zu MSBuild
string. Optional. Verwenden Sie , wenn msbuildLocationMethod = location.

Stellt den Pfad zu MSBuild bereit.


platform - Plattform
string.

Tipp

  • Wenn Sie eine MSBuild-Projektdatei (.*proj) anstelle einer Projektmappe als Ziel verwenden, geben Sie AnyCPU an (ohne Leerzeichen).
  • Deklarieren Sie eine Buildvariable, z BuildPlatform . B. auf der Registerkarte Variablen (auswahl Allow unter Warteschlangenzeit), und verweisen Sie hier als $(BuildPlatform)darauf. Auf diese Weise können Sie die Plattform ändern, wenn Sie den Build in die Warteschlange einreihen und das Erstellen mehrerer Konfigurationen ermöglichen.

configuration - Konfiguration
string.

Tipp

Deklarieren Sie eine Buildvariable, z BuildConfiguration . B. auf der Registerkarte Variablen (auswahl Allow unter Warteschlangenzeit), und verweisen Sie hier als $(BuildConfiguration)darauf. Auf diese Weise können Sie die Plattform ändern, wenn Sie den Build in die Warteschlange einreihen und das Erstellen mehrerer Konfigurationen ermöglichen.


msbuildArguments - MSBuild-Argumente
string.

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


clean - Sauber
boolean. Standardwert. false.

Legen Sie auf fest False , wenn Sie dies zu einem inkrementellen Build machen möchten. Diese Einstellung kann die Buildzeit reduzieren, insbesondere bei einer umfangreichen Codebasis. Diese Option hat keine praktische Auswirkung, es sei denn, Sie legen auch das Clean Repository auf fest False. Legen Sie auf fest True , wenn Sie den gesamten Code in den Codeprojekten neu erstellen möchten. Dieser entspricht dem /target:clean-Argument von MSBuild. Weitere Informationen finden Sie unter Repositoryoptionen.


maximumCpuCount - Paralleles Erstellen
boolean. Standardwert. false.

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


restoreNugetPackages - Wiederherstellen von NuGet-Paketen
boolean. Standardwert. false.

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


logProjectEvents - Aufzeichnen von Projektdetails
boolean. Standardwert. false.

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


createLogFile - Erstellen einer Protokolldatei
boolean. Standardwert. false.

Erstellt optional eine Protokolldatei (nur Windows).


logFileVerbosity - Ausführlichkeit der Protokolldatei
string. Optional. Verwenden Sie , wenn createLogFile = true. Zulässige Werte: quiet, minimal, normal, detailed, diagnostic. Standardwert. normal.

Gibt die Ausführlichkeit der Protokolldatei an.


Optionen für die Vorgangskontrolle

Alle Vorgänge verfügen zusätzlich zu ihren Eingaben über Steuerungsoptionen. Weitere Informationen finden Sie unter Steuerungsoptionen und allgemeine Aufgabeneigenschaften.

Ausgabevariablen

Keine.

Hinweise

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

Wenn Sie eine Projektmappe erstellen, sollten Sie in den meisten Fällen die Visual Studio-Buildaufgabe verwenden. Mit dieser Aufgabe wird automatisch Folgendes durchgeführt:

  • Die Eigenschaft /p:VisualStudioVersion wird für Sie festgelegt. Dies zwingt MSBuild dazu, bestimmte Ziele zu verwenden, die die Wahrscheinlichkeit eines erfolgreichen Builds erhöhen.
  • Das MSBuild-Versionsargument wird angegeben.

In einigen Fällen müssen Sie möglicherweise die MSBuild Aufgabe verwenden. Sie sollten sie etwa verwenden, wenn Sie neben einer Projektmappe Codeprojekte erstellen.

Wo erfahre ich mehr über MSBuild?

MSBuild-Referenz

MSBuild-Befehlszeilenreferenz

Wie erstelle ich mehrere Konfigurationen für mehrere Plattformen?

  1. Stellen Sie auf der Registerkarte Variablen sicher, dass Variablen für Ihre Konfigurationen und Plattformen definiert sind. Bei der Eingabe von mehreren Werten trennen Sie die Werte durch Kommas. Beispiel:

    • Für eine .NET-App können Sie mit Debug- und Releasewerten angeben BuildConfiguration und mit einem beliebigen CPU-Wert angeben BuildPlatform .
    • Für eine C++-App können Sie mit Debug- und Releasewerten angeben BuildConfiguration und mit beliebigen x86- und x64-Werten angeben BuildPlatform .
  2. Wählen Sie auf der Registerkarte Optionen die Option aus MultiConfiguration , und geben Sie durch MultipliersKommas getrennt an. Beispiel: BuildConfiguration, BuildPlatform Wählen Sie aus Parallel , ob Sie die Aufträge (einen für jede Kombination von Werten) parallel an mehrere Agents verteilen möchten, sofern sie verfügbar sind.

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

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

Kann ich TFSBuild.proj-Dateien erstellen?

Sie können keine Dateien erstellen TFSBuild.proj . Diese Dateitypen werden von TFS 2005 und TFS 2008generiert. Diese Dateien enthalten Aufgaben, und Ziele werden nur mithilfe von XAML-Builds unterstützt.

Problembehandlung

In diesem Abschnitt finden Sie Tipps zur Problembehandlung bei häufigen Problemen, die bei der Verwendung der MSBuild Aufgabe auftreten können.

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

Mögliche Ursachen
  • Änderung in der 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 zum Diagnostizieren des Problems besteht darin, einen Blick auf die generierten Protokolle zu werfen. Sie können Ihre Pipelineprotokolle anzeigen, indem Sie die entsprechende Aufgabe und den entsprechenden Auftrag in ihrer Pipelineausführungszusammenfassung auswählen.

Zum Abrufen der Protokolle der Pipelineausführung rufen Sie die Protokolle zum Diagnostizieren von Problemen ab.

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

Zusätzlich zu den Pipelinediagnoseprotokollen können Sie auch diese anderen Typen von Protokollen überprüfen, die weitere Informationen enthalten, um Sie beim Debuggen und Lösen des Problems zu unterstützen:

Versuch einer lokalen Reproduktion des Fehlers

Wenn Sie einen gehosteten Build-Agent verwenden, sollten Sie versuchen, den Fehler lokal zu reproduzieren. Dadurch können Sie eingrenzen, 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. Sehen Sie sich den MSBuild-Befehl als Referenz an.

Tipp

Wenn Sie das Problem auf einem lokalen Computer reproduzieren können, müssen Sie als Nächstes das MSBuild-Problem untersuchen.

Erfahren Sie mehr über von Microsoft gehostete Agents.

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

Welche weiteren Möglichkeiten gibt es?

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

Anforderungen

Anforderung BESCHREIBUNG
Pipelinetypen YAML, Klassischer Build
Wird ausgeführt auf Agent, DeploymentGroup
Forderungen Selbstgehostete Agents müssen über Funktionen verfügen, die den folgenden Anforderungen entsprechen , um Aufträge auszuführen, die diese Aufgabe verwenden: msbuild
Capabilities Diese Aufgabe erfüllt keine Anforderungen an nachfolgende Aufgaben im Auftrag.
Befehlseinschränkungen Any
Einstellbare Variablen Any
Agent-Version 1.95.0 oder höher
Aufgabenkategorie Entwickeln

Weitere Informationen