Aufgabe "Indexquellen & Veröffentlichen von Symbolen"

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

Verwenden Sie diese Aufgabe, um Ihren Quellcode zu indizieren und optional Symbole auf dem Server der Paketverwaltung oder einer Dateifreigabe zu veröffentlichen.

Mit dem Indizieren von Quellcode können Sie Ihre PDB-Symboldateien verwenden, um eine App auf einem anderen Computer als dem zu debuggen, den Sie zum Erstellen der App verwendet haben. Sie können beispielsweise eine app debuggen, die von einem Build-Agent von einem Entwicklungscomputer erstellt wurde, der nicht über den Quellcode verfügt.

Symbolserver ermöglichen es Ihrem Debugger, die richtigen Symboldateien automatisch abzurufen, ohne Produktnamen, Buildnummern oder Paketnamen zu kennen. Weitere Informationen zu Symbolen finden Sie auf der Konzeptseite; verwenden Sie diese Aufgabe, um Symbole zu veröffentlichen und die exemplarische Vorgehensweise anzuzeigen.

Forderungen

Keine

YAML-Codeausschnitt

# Index sources and publish symbols
# Index your source code and publish symbols to a file share or Azure Artifacts symbol server
- task: PublishSymbols@2
  inputs:
    #symbolsFolder: '$(Build.SourcesDirectory)' # Optional
    #searchPattern: '**/bin/**/*.pdb' 
    #indexSources: true # Optional
    #publishSymbols: true # Optional
    #symbolServerType: ' ' # Required when publishSymbols == True# Options:  , teamServices, fileShare
    #symbolsPath: # Optional
    #compressSymbols: false # Required when symbolServerType == FileShare
    #detailedLog: true # Optional
    #treatNotIndexedAsWarning: false # Optional
    #symbolsMaximumWaitTime: # Optional
    #symbolsProduct: # Optional
    #symbolsVersion: # Optional
    #symbolsArtifactName: 'Symbols_$(BuildConfiguration)' # Optional

Argumente

Argument BESCHREIBUNG
SymbolsFolder
Pfad zum Symbolordner

(Optional) Der Pfad zum Ordner, der nach Symboldateien gesucht wird. Der Standardwert ist $(Build.SourcesDirectory), andernfalls geben Sie einen gewurzelten Pfad an. Beachten Sie, dass UNC-Pfade nicht unterstützt werden, wenn Sie den Azure Artifacts Symbolserver als Servertyp auswählen.
Beispiel: $(Build.BinariesDirectory)/MyProject

SearchPattern
Suchmuster

(Erforderlich) Dateiabgleichsmuster(n) Das Muster zum Ermitteln der zu veröffentlichenden PDB-Dateien


Standardwert: **/bin/**/*.pdb
IndexSources
Indexquellen

(Optional) Gibt an, ob Quellserverinformationen in die PDB-Dateien eingefügt werden sollen.


Standardwert: true
PublishSymbols
Veröffentlichen von Symbolen

(Optional) Gibt an, ob die Symboldateien veröffentlicht werden sollen


Standardwert: true
SymbolServerType
Symbolservertyp
(Erforderlich) Wählen Sie aus, wo Symbole veröffentlicht werden sollen. Auf dem Azure Artifacts-Symbolserver veröffentlichte Symbole sind von jedem Benutzer mit Zugriff auf die Organisation/Sammlung zugänglich. Azure DevOps Server unterstützt nur die Option "Dateifreigabe". Befolgen Sie diese Anweisungen, um den Symbolserver in Azure Artifacts zu verwenden.
TeamServices:
  • Symbolserver in dieser Organisation/Auflistung (erfordert Azure Artifacts)
Dateifreigabe:
  • Wählen Sie diese Option aus, um die in der nächsten Eingabe angegebene Dateifreigabe zu verwenden.
SymbolsPath
Pfad zum Veröffentlichen von Symbolen

(Optional) Die Dateifreigabe, die Ihre Symbole hostt. Dieser Wert wird im Aufruf vonsymstore.exe als Parameter "/s" hinzugefügt.

So bereiten Sie Ihren SymStore-Symbolspeicher vor:

  1. Richten Sie einen Ordner auf einem Dateifreigabeserver zum Speichern der Symbole ein. Richten Sie beispielsweise \fabrikam-share\symbols ein.
  2. Erteilen der Vollzugriffsberechtigung für das Build-Agent-Dienstkonto.

Wenn Sie dieses Argument leer lassen, werden Ihre Symbole indiziert, aber nicht veröffentlicht. (Sie können Ihre Symbole auch mit Ihren Tropfen speichern. Siehe "Build veröffentlichen Artifacts").

CompressSymbols
Komprimieren von Symbolen

(Erforderlich) Nur verfügbar, wenn die Dateifreigabe als Symbolservertyp ausgewählt ist. Komprimiert Ihren pdbs Speicherplatz, um Speicherplatz zu sparen.
Standardwert: False

Erweiterte Optionen

Argument BESCHREIBUNG
DetailedLog
Ausführliche Protokollierung
(Optional) Aktiviert zusätzliche Protokolldetails.
Standardwert: true
TreatNotIndexedAsWarning
Warnen, wenn nicht indiziert

(Optional) Gibt an, ob Quellen für eine PDB-Datei nicht indiziert werden sollen. Andernfalls werden die Nachrichten als normale Ausgabe protokolliert.
Eine häufige Ursache für quellen, die nicht indiziert werden, sind, wenn Ihre Lösung von Binärdateien abhängt, die nicht erstellt werden.

Auch wenn Sie diese Option nicht auswählen, werden die Nachrichten im Protokoll geschrieben.


Standardwert: False
SymbolsMaximumWaitTime
Maximale Wartezeit (min)
(Optional) Die Anzahl der Minuten, die gewartet werden sollen, bevor dieser Vorgang fehlschlägt. Wenn Sie es leer lassen, beträgt der Grenzwert 2 Stunden.
SymbolsProduct
Produkt
(Optional) Geben Sie den Produktparameter an, der symstore.exe soll. Der Standardwert ist $(Build.DefinitionName)
SymbolsVersion
Version
(Optional) Geben Sie den Versionsparameter für symstore.exe an. Der Standardwert ist $(Build.BuildNumber).
SymbolsArtifactName
Artefaktname
(Optional) Geben Sie den Artefaktnamen an, der für das Symbolartefakt verwendet werden soll. Der Standardwert ist Symbols_$(BuildConfiguration).
Standardwert: Symbols_$(BuildConfiguration)

Weitere Informationen zu den verschiedenen Arten von Aufgaben und deren Verwendung finden Sie unter Aufgabensteuerungsoptionen.

Wichtig

Zum Löschen von Symbolen, die mit der Aufgabe "Indexquellen & veröffentlichende Symbole " veröffentlicht wurden, müssen Sie zuerst den Build löschen, der diese Symbole generiert hat. Dies kann mithilfe von Aufbewahrungsrichtlinien oder durch manuelles Löschen der Ausführung erreicht werden.

Open Source

Diese Aufgabe wird auf GitHub Open Source. Feedback und Beiträge sind willkommen.

Häufig gestellte Fragen

Wie funktioniert die Indizierung?

Wenn Sie die Quellen indizieren möchten, wird ein zusätzlicher Abschnitt in die PDB-Dateien eingefügt. PDB-Dateien enthalten normalerweise Nur Verweise auf lokale Quelldateipfade. Beispiel: C:\BuildAgent\_work\1\src\MyApp\Program.cs. Der zusätzliche Abschnitt, der in die PDB-Datei eingefügt wird, enthält Zuordnungsanweisungen für Debugger. Die Zuordnungsinformationen zeigen an, wie das Serverelement abgerufen wird, das jedem lokalen Pfad entspricht.

Der Visual Studio Debugger verwendet die Zuordnungsinformationen, um die Quelldatei vom Server abzurufen. Ein tatsächlicher Befehl zum Abrufen der Quelldatei ist in den Zuordnungsinformationen enthalten. Möglicherweise werden Sie von Visual Studio aufgefordert, ob der Befehl ausgeführt werden soll. Beispiel:

tf.exe git view /collection:http://SERVER:8080/tfs/DefaultCollection /teamproject:"93fc2e4d-0f0f-4e40-9825-01326191395d" /repository:"647ed0e6-43d2-4e3d-b8bf-2885476e9c44" /commitId:3a9910862e22f442cd56ff280b43dd544d1ee8c9 /path:"/MyApp/Program.cs" /output:"C:\Users\username\AppData\Local\SOURCE~1\TFS_COMMIT\3a991086\MyApp\Program.cs" /applyfilters

Kann ich die Quellindizierung für eine tragbare PDB verwenden, die aus einer .NET Core-Assembly erstellt wurde?

Nein, Quelllink entspricht der Quellindizierung für portable PDBs.

Wo kann ich mehr über Symbolspeicher und Debugging erfahren?

Benötige ich einen Agent?

Sie benötigen mindestens einen Agent, um den Build oder das Release auszuführen.

Ich habe Probleme. Wie kann ich diese beheben?

Weitere Informationen finden Sie unter Problembehandlung bei Build und Release.

Ich kann keinen standardmäßigen Agentpool auswählen und ich kann meine Builds oder Releases nicht in der Warteschlange positionieren. Wie kann ich dies korrigieren?

Weitere Informationen finden Sie unter Agentpools.

Die Nuget-Pushaufgabe scheitert mit folgendem Fehler: „Fehler: Das lokale Ausstellerzertifikat konnte nicht abgerufen werden.“ Wie kann ich dieses Problem beheben?

Dies kann durch das Hinzufügen eines vertrauenswürdigen Stammzertifikats behoben werden. Sie können entweder die NODE_EXTRA_CA_CERTS=file Umgebungsvariable ihrem Build-Agent hinzufügen oder die NODE.EXTRA.CA.CERTS=file Aufgabenvariable in Ihrer Pipeline. Weitere Informationen zu dieser Variablen finden Sie in der Dokumentation zu Node.js. Anweisungen zum Festlegen einer Variablen in Ihrer Pipeline finden Sie unter Festlegen von Variablen in einer Pipeline.

Wie lange bleiben Symbole erhalten?

Wenn Symbole für Azure Pipelines veröffentlicht werden, werden sie einem Build zugeordnet. Wenn der Build entweder manuell oder aufgrund von Aufbewahrungsrichtlinien gelöscht wird, werden die Symbole auch gelöscht. Wenn Sie die Symbole unbegrenzt beibehalten möchten, sollten Sie den Build als Unbefristet markieren.