FileTransform@2: Dateitransformation v2-Aufgabe

Verwenden Sie diese Aufgabe, um Token in XML- oder JSON-Konfigurationsdateien durch Variablenwerte zu ersetzen.

Syntax

# File transform v2
# Replace tokens with variable values in XML or JSON configuration files.
- task: FileTransform@2
  inputs:
    folderPath: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #xmlTransformationRules: '-transform **\*.Release.config -xml **\*.config' # string. XML Transformation rules. Default: -transform **\*.Release.config -xml **\*.config.
  # Variable Substitution
    #jsonTargetFiles: # string. JSON target files. 
    #xmlTargetFiles: # string. XML target files.

Eingaben

folderPath - Paket oder Ordner
string. Erforderlich. Standardwert. $(System.DefaultWorkingDirectory)/**/*.zip.

Dateipfad zum Paket oder Ordner.

Variablen sind Build und Release. Platzhalter werden unterstützt.

Beispiel: $(System.DefaultWorkingDirectory)/**/*.zip. Bei gezippten Ordnern werden die Inhalte an den TEMP-Speicherort extrahiert, Transformationen ausgeführt und die Ergebnisse in den ursprünglichen Artefaktspeicherort gezippt.


xmlTransformationRules - XML-Transformationsregeln
string. Standardwert. -transform **\*.Release.config -xml **\*.config.

Stellt eine durch Zeilen getrennte Liste von Transformationsdateiregeln mithilfe der Syntax bereit: -transform <pathToTransformFile> -xml <pathToSourceConfigurationFile>. Der Pfad der Ergebnisdatei ist optional, und wenn nicht angegeben, wird die Quellkonfigurationsdatei durch die transformierte Ergebnisdatei ersetzt.


jsonTargetFiles - JSON-Zieldateien
string.

Stellt eine durch Zeilen getrennte Liste von Dateien bereit, um die Variablenwerte zu ersetzen. Dateinamen müssen relativ zum Stammordner angegeben werden.

Um beispielsweise den Wert von ConnectionString im folgenden Beispiel zu ersetzen, müssen Sie eine Variable wie Data.DefaultConnection.ConnectionString in der Build- oder Releasepipeline (oder der Umgebung der Releasepipeline) definieren.

{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB;Trusted_Connection=True"
    }
  }
}

Variablenersetzung wird nach Konfigurationstransformationen ausgeführt.

Hinweis: Nur benutzerdefinierte Variablen, die in Build-/Releasepipelines definiert sind, werden als Ersetzung verwendet. Standard-/systemdefinierte Pipelinevariablen werden ausgeschlossen. Wenn dieselben Variablen in der Releasepipeline und in der Phase definiert sind, ersetzen die Phasenvariablen die Releasepipelinevariablen.


xmlTargetFiles - XML-Zieldateien
string.

Stellt eine durch Zeilen getrennte Liste von Dateien bereit, um die Variablenwerte zu ersetzen. Dateinamen müssen relativ zum Stammordner angegeben werden.

Für XML werden variablen, die in den Build- oder Releasepipelines definiert sind, mit den key Einträgen oder name in den appSettingsAbschnitten , applicationSettingsund connectionStrings einer beliebigen Konfigurationsdatei und parameters.xmlabgeglichen.

Variablenersetzung wird nach Konfigurationstransformationen ausgeführt.

Hinweis: Bei der Ersetzung werden nur benutzerdefinierte Variablen verwendet, die in Build-/Releasepipelines definiert sind. Standard-/systemdefinierte Pipelinevariablen werden ausgeschlossen. Wenn dieselben Variablen in der Releasepipeline und in der Phase definiert sind, ersetzen die Phasenvariablen die Releasepipelinevariablen.


Aufgabensteuerungsoptionen

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

Ausgabevariablen

Keine.

Hinweise

Neuerungen in Dateitransformation Version 2:

  • Optimierte Aufgabenfelder, mit denen Benutzer alle Transformationsfeatures (XML), Variablenersetzung (JSON und XML) in einer einzelnen Aufgabeninstanz aktivieren können.
  • Der Task schlägt fehl, wenn eine der konfigurierten Transformationen/Ersetzungen NICHT angewendet wird oder wenn die Aufgabe nicht verwendet wird.

Verwenden Sie diese Aufgabe, um Dateitransformationen und Variablenersetzungen auf Konfigurations- und Parameterdateien anzuwenden. Ausführliche Informationen zur Verarbeitung von Übersetzungen finden Sie unter Dateitransformationen und Variablenersetzungsreferenz.

Wichtig

Diese Aufgabe ist für Webpakete vorgesehen und erfordert eine Webpaketdatei. Es funktioniert nicht mit eigenständigen JSON-Dateien.

Dateitransformationen

  • Derzeit werden Dateitransformationen nur für XML-Dateien unterstützt.
  • Zum Anwenden einer XML-Transformation auf Konfigurationsdateien (*.config) müssen Sie eine durch Zeilen getrennte Liste von Transformationsdateiregeln mithilfe der Syntax angeben:-t ransform <path to the transform file> -xml <path to the source file> -result <path to the result file>
  • Dateitransformationen sind in vielen Szenarien nützlich, insbesondere wenn Sie in einem App-Dienst bereitstellen und Konfigurationen für verschiedene Umgebungen (z. B. Dev, Test oder Prod) hinzufügen, entfernen oder ändern möchten, indem Sie die Standardmäßige Web.config Transformationssyntax verwenden.
  • Sie können diese Funktion auch verwenden, um andere Dateien zu transformieren, einschließlich Konfigurationsdateien für Konsolen- oder Windows-Dienstanwendungen (z. B. FabrikamService.exe.config).
  • Konfigurationsdateitransformationen werden vor Variablenersetzungen ausgeführt.

Variablenersetzung

  • Derzeit werden nur XML- und JSON-Dateiformate für die Variablenersetzung unterstützt.
  • Token, die in den Zielkonfigurationsdateien definiert sind, werden aktualisiert und dann durch Variablenwerte ersetzt.
  • Variablenersetzungen werden nach Konfigurationsdateitransformationen ausgeführt.
  • Die Variablenersetzung wird nur für die json-Schlüssel angewendet, die in der Objekthierarchie vordefiniert sind. Es werden keine neuen Schlüssel erstellt.

Hinweis

Nur benutzerdefinierte Variablen, die in Build- und Releasepipelines definiert sind, werden als Ersetzung verwendet. Standard- und Systempipelinevariablen sind ausgeschlossen.

Dies ist eine Liste der derzeit ausgeschlossenen Präfixe:

  • agent.
  • azure_http_user_agent
  • build.
  • common.
  • release.
  • system.
  • tf_

Wenn dieselben Variablen sowohl in der Releasepipeline als auch in einer Phase definiert sind, ersetzen die phasendefinierten Variablen die durch die Pipeline definierten Variablen.

Siehe auch: Dateitransformationen und Variablenersetzungsreferenz.

Beispiele

Wenn die XML-Transformation für alle Konfigurationsdateien mit dem Namen mit dem Muster .Production.configausgeführt werden soll, sollte die Transformationsregel wie folgt angegeben werden:

-transform **\*.Production.config -xml **\*.config

Wenn Sie eine Konfigurationsdatei mit dem Namen basierend auf dem Phasennamen in Ihrer Pipeline haben, können Sie Folgendes verwenden:

-transform **\*.$(Release.EnvironmentName).config -xml **\*.config

Um JSON-Variablen zu ersetzen, die geschachtelt oder hierarchisch sind, geben Sie sie mithilfe von JSONPath-Ausdrücken an. Um beispielsweise den Wert von ConnectionString im folgenden Beispiel zu ersetzen, müssen Sie eine Variable wie Data.DefaultConnection.ConnectionString in der Build- oder Releasepipeline (oder in einer Phase innerhalb der Releasepipeline) definieren.

{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB;Trusted_Connection=True"
    }
  }
}

Anforderungen

Anforderung BESCHREIBUNG
Pipelinetypen YAML, Klassischer Build, klassisches Release
Wird ausgeführt auf Agent, DeploymentGroup
Forderungen Keine
Capabilities Diese Aufgabe erfüllt keine Anforderungen an nachfolgende Aufgaben im Auftrag.
Befehlseinschränkungen Any
Setzbare Variablen Any
Agent-Version Alle unterstützten Agent-Versionen.
Aufgabenkategorie Hilfsprogramm

Weitere Informationen