Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
SolutionPackager ist ein Tool, das eine Microsoft Dataverse komprimierte Lösungsdatei in mehrere XML-Dateien und andere Dateien umkehrbar dekompilieren kann. Sie können diese Dateienproblemlos mithilfe von einem Versionsverwaltungssystem verwalten. In den folgenden Abschnitten wird gezeigt, wie Sie das Tool ausführen und wie Sie das Tool mit verwalteten und nicht verwalteten Lösungen verwenden.
Wichtig
Das SolutionPackager-Tool wird nicht mehr zum Entpacken und Verpacken von Lösungen empfohlen. Die Funktionen des SolutionPackager-Tools werden in die Power Platform CLI integriert. Der pac solution Befehl enthält viele Verben, einschließlich unpack, pack, cloneund sync die dieselben zugrunde liegenden Funktionen des SolutionPackager-Tools enthalten.
Wo finde ich das SolutionPackager-Tool?
Das SolutionPackager-Tool wird als Teil des NuGet-Pakets Microsoft.CrmSdk.CoreTools verteilt. Um das Programm zu installieren, führen Sie diese Schritte aus.
- Laden Sie das NuGet-Paket herunter.
- Benennen Sie die Dateinamenerweiterung des Pakets von .nupkg in .zip um.
- Extrahieren Sie den Inhalt der komprimierten (Zip)-Datei.
Suchen Sie die ausführbare SolutionPackager.exe-Datei im Ordner <extracted-folder-name>/contents/bin/coretools. Führen Sie das Programm aus dem Coretools-Ordner aus oder fügen Sie diesen Ordner zu Ihrem PATH hinzu.
SolutionPackager-Befehlszeilenargumente
SolutionPackager ist ein Befehlszeilentool. Sie können sie aufrufen, indem Sie die in der folgenden Tabelle beschriebenen Parameter verwenden.
| Argument | Beschreibung |
|---|---|
| /action: {Extrahieren|Packen} | Erforderlich. Die auszuführende Aktion. Die Aktion kann entweder darin bestehen, eine Lösung .zip Datei in einen Ordner zu extrahieren oder einen Ordner in eine .zip Datei zu packen. |
| /zipfile: <Dateipfad> | Erforderlich. Der Pfad und der Name einer Lösungsdatei .zip. Beim Extrahieren muss die Datei vorhanden und lesbar sein. Beim Verpacken wird die Datei ersetzt. |
| /folder: <Pfad des Ordners> | Erforderlich. Der Pfad zu einem Ordner. Beim Extrahieren wird dieser Ordner erstellt und mit Komponentendateien gefüllt. Beim Packen muss dieser Ordner bereits vorhanden sein und zuvor extrahierte Komponentendateien enthalten. |
| /packagetype: {Nicht verwaltet|Verwaltet|Beide} | Optional. Der Typ des zu verarbeitenden Pakets. Der Standardwert ist Nicht verwaltet. Lassen Sie dieses Argument in den meisten Fällen aus, da das Tool den Pakettyp aus der .zip-Datei oder aus den Komponentendateien lesen kann. Beim Extrahieren, wenn der Pfad angegeben sind, müssen verwaltete und nicht verwaltete ZIP-Lösungsdateien vorhanden sein und werden in einem einzelnen Ordner verarbeitet. Beim Packen, wenn der Pfad angegeben ist, werden verwaltete und nicht verwaltete ZIP-Dateien aus demselben Ordner hergestellt. Weitere Informationen finden Sie im Abschnitt zur Arbeit mit verwaltete und nicht verwalteten Lösungen weiter unten in diesem Artikel. |
| /allowWrite:{Ja|Nein} | Optional. Der Standardwert ist Ja. Verwenden Sie dieses Argument nur während einer Extraktion. Wenn Sie "/allowWrite:No" angeben, führt das Tool alle Vorgänge aus, schreibt oder löscht jedoch keine Dateien. Sie können den Extraktionsvorgang sicher testen, ohne vorhandene Dateien zu überschreiben oder zu löschen. |
| /allowDelete:{Yes|No|Prompt} | Optional. Der Standardwert ist Prompt. Verwenden Sie dieses Argument nur während einer Extraktion. Wenn Sie "/allowDelete:Yes" angeben, löscht das Tool automatisch alle Dateien, die im durch den Parameter "/folder" angegebenen Ordner vorhanden sind und die nicht erwartet werden. Wenn Sie /allowDelete:No angeben, löscht das Tool keine Dateien. Wenn Sie "/allowDelete:Prompt" angeben, wird der Benutzer über die Konsole aufgefordert, alle Löschvorgänge zuzulassen oder zu verweigern. Wenn Sie /allowWrite:No angeben, löscht das Tool auch dann keine Dateien, wenn /allowDelete:Yes angegeben ist. |
| /clobber | Optional. Verwenden Sie dieses Argument nur während einer Extraktion. Wenn Sie /clobber angeben, überschreibt oder löscht das Tool Dateien, bei denen das Schreibschutzattribut gesetzt ist. Wenn nicht angegeben, überschreibt oder löscht das Tool keine Dateien mit dem schreibgeschützten Attribut. |
| /errorlevel: {Aus|Fehler|Warnung|Informationen|Ausführlich} | Optional. Der Standardwert ist Info. Dieses Argument gibt die Ebene der Protokollierungsinformationen an, die ausgegeben werden sollen. |
| /map: <Dateipfad> | Optional. Der Pfad und der Name einer .xml Datei, die Dateizuordnungsanweisungen enthält. Bei Verwendung während einer Extraktion liest das Tool Dateien in der Regel innerhalb des durch den Parameter /folder angegebenen Ordners aus alternativen Speicherorten, wie in der Zuordnungsdatei angegeben. Während eines Packvorgangs schreibt das Tool keine Dateien, die den Direktiven entsprechen. |
| /nologo | Optional. Das Banner zur Laufzeit unterdrücken. |
| /log: <Dateipfad> | Optional. Ein Pfad und ein Name zu einer Protokolldatei. Wenn die Datei bereits vorhanden ist, werden neue Protokollierungsinformationen an die Datei angehängt. |
| @ <Dateipfad> | Optional. Ein Pfad und ein Name zu einer Datei, die Befehlszeilenargumente für das Tool enthält. |
| /sourceLoc: <Zeichenfolge> | Optional. Dieses Argument generiert eine Vorlagenressourcendatei und ist nur beim Extrahieren gültig. Mögliche Werte sind auto oder ein LCID/ISO-Code für die Sprache, die Sie exportieren möchten. Wenn Sie dieses Argument verwenden, extrahiert das Tool die Zeichenfolgenressourcen aus dem angegebenen Gebietsschema als neutrale RESX-Datei. Wenn Sie auto oder nur die lange oder kurze Form des Schalters angeben, wird die Basis-Locale oder die Lösung verwendet. Sie können die Kurzform des Befehls verwenden: /src. |
| /lokalisieren | Optional. Extrahieren Sie alle Zeichenfolgenressourcen in .resx-Dateien, oder führen Sie sie zusammen. Sie können die Kurzform des Befehls verwenden: /loc. Die Lokalisierungsoption unterstützt freigegebene Komponenten für resx-Dateien. Weitere Informationen finden Sie unter Verwenden von RESX-Webressourcen. |
| /SolutionName: <Name> | Optional. Der eindeutige Name der Lösung, die verpackt oder extrahiert werden soll, wenn der Quellordner mehrere Lösungen unter solutions/*/solution.ymlenthält. Erforderlich, wenn mehrere Lösungen erkannt werden. Gilt nur für das YAML-Quellcodeverwaltungsformat. Sie können die kurze Form des Befehls verwenden: /sn. |
| /remapPluginTypeNames | Optional. Wenn angegeben, werden vom Tool vollqualifizierte Typnamen basierend auf den Assemblies, die in der Lösung enthalten sind, neu zugeordnet. Standardmäßig im YAML-Quellcodeverwaltungsformat aktiviert. Sie können die kurze Form des Befehls verwenden: /fp. |
Dateiformate für die Quellcodeverwaltung
SolutionPackager unterstützt zwei Ordnerlayouts beim Extrahieren und Verpacken von Lösungen.
XML-Format (veraltet)
Das ursprüngliche Format. Das Tool speichert Lösungsmetadaten in Other\Solution.xml und Other\Customizations.xml. Das Tool extrahiert alle Komponentendateien in eine flache Ordnerhierarchie neben diesen Dateien. Dieses Format ist das Standardformat, wenn Sie eine .zip Datei ohne weitere Konfiguration extrahieren.
YAML-Quellcodeverwaltungsformat
Neben der Integration von Dataverse Git speichert dieses Format Lösungsmetadaten als YAML-Dateien, die über eine strukturierte Ordnerhierarchie verteilt werden. Es ist das Format, das geschrieben wird, wenn Sie Lösungen mithilfe der nativen Git-Integration in Power Apps commiten.
Vorteile gegenüber dem XML-Format
- Erzeugt übersichtlichere, besser lesbare Diffs pro Komponente in der Quellcodeverwaltung.
- Unterstützt mehrere Lösungen in einem einzigen Repositoryordner.
- Canvas-App-Dateien
.msappund moderne Flows werden nur in diesem Format unterstützt. - Die Neuzuordnung von Plug-In-Typnamen ist standardmäßig aktiviert.
Erforderliche Ordnerstruktur
<rootFolder>/
├── solutions/
│ └── <SolutionUniqueName>/
│ ├── solution.yml (solution metadata)
│ ├── solutioncomponents.yml (paths to all component files)
│ ├── rootcomponents.yml (root-level components)
│ └── missingdependencies.yml (dependency info)
├── publishers/
│ └── <PublisherUniqueName>/
│ └── publisher.yml (publisher definition)
├── entities/ (entity components, if present)
├── workflows/ (classic workflows, if present)
├── modernflows/ (Power Automate cloud flows, if present)
├── canvasapps/ (canvas app .msapp files, if present)
└── [other component folders]/
Wichtig
Das Vorhandensein eines solutions/ Unterordners, der *solution.yml Dateien enthält, weist auf das YAML-Format hin.
Wenn Sie Ihre YAML-Manifestdateien (solution.yml, solutioncomponents.ymlusw.) im Stammverzeichnis des Ordners und nicht unter solutions/<SolutionUniqueName>/ platzieren, erkennt das Tool das YAML-Format nicht. Das Tool greift auf den XML-Pfad zurück und meldet irreführend, dass ein Customizations.xml fehlt. Informationen zum Beheben dieses Problems finden Sie unter "Problembehandlung ".
Weitere Informationen: Referenz zum YaML-Quellcodeverwaltungsformat der Lösung
Formatieren von Regeln für die automatische Erkennung
| Bedingung | Verwendetes Format |
|---|---|
solutions/*/solution.yml gefunden – genau eine Lösung |
YAML-Format, in dem der Lösungsname aus dem Ordner abgeleitet wird |
solutions/*/solution.yml gefunden – mehrere Lösungen |
YAML-Format, in dem das /SolutionName Argument erforderlich ist |
Kein solutions/ Unterverzeichnis vorhanden |
XML-Format (veraltet) |
Packen eines YAML-Format-Verzeichnisses
Der folgende Befehl packt einen Ordner im YAML-Format.
SolutionPackager.exe /action:Pack /zipfile:MySolution.zip /folder:C:\repos\myrepo
Entpacken aus einem Ordner mit mehreren Lösungen
Der folgende Befehl enthält eine angegebene Lösung in einem Ordner mit mehreren Lösungen.
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
Verwenden Sie das Befehlsargument /map
In der folgenden Erläuterung wird die Verwendung des /map-Arguments für das SolutionPackager-Tool ausführlich beschrieben.
Dateien, die in einem automatisierten Buildsystem erstellt werden, z. B. .xap Silverlight-Dateien und Plug-In-Assemblys, werden in der Regel nicht in die Quellcodeverwaltung eingecheckt. Möglicherweise verfügen Sie bereits über Webressourcen in der Quellcodeverwaltung an Speicherorten, die nicht direkt mit dem SolutionPackager-Tool kompatibel sind. Indem Sie den Parameter "/map" angeben, können Sie das SolutionPackager-Tool anweisen, solche Dateien von alternativen Speicherorten statt aus dem Ordner "Extract" zu lesen und zu verpacken. Der Parameter /map muss den Namen und den Pfad zu einer XML-Datei angeben, die Zuordnungsanweisungen enthält. Diese Anweisungen weisen den SolutionPackager an, Dateien anhand ihres Namens und Pfads abzugleichen, und geben den alternativen Speicherort an, um die abgeglichene Datei zu finden. Die folgenden Informationen gelten für alle Direktiven gleichermaßen.
Sie können mehrere Direktiven auflisten, einschließlich der Direktiven, die auf dieselben Dateien zutreffen. Früh in der Datei aufgeführte Direktiven haben Vorrang gegenüber den später aufgeführten Direktiven.
Wenn eine Datei mit einer Direktive übereinstimmt, muss sie an mindestens einem alternativen Speicherort gefunden werden. Wenn keine entsprechenden Alternativen gefunden werden, gibt der SolutionPackager einen Fehler aus.
Ordner- und Dateipfade können absolut oder relativ sein. Relative Pfade werden immer aus dem Ordner ausgewertet, der durch den Parameter /folder angegeben wird.
Geben Sie Umgebungsvariablen mithilfe einer
%variable%Syntax an.Verwenden Sie einen Ordnerplatzhalter
**, um „in einem beliebigen Unterordner“ anzugeben. Sie können ihn nur als endgültigen Teil eines Pfads verwenden, z. B.:c:\folderA\**.Verwenden Sie Dateinamen-Wildcards nur in den Formen
*.extoder*.*. Es wird kein anderes Muster unterstützt.Im folgenden Abschnitt werden die drei Typen von Direktivenzuordnungen sowie ein Beispiel beschrieben, in dem gezeigt wird, wie sie verwendet werden.
Ordnerzuordnung
Der folgende Abschnitt enthält ausführliche Informationen zur Ordnerzuordnung.
XML-Format
<Folder map="folderA" to="folderB" />
Beschreibung
Dateipfade, die mit "folderA" übereinstimmen, werden zu "folderB" geändert.
Die Hierarchie von Unterordnern unter jedem Ordner muss exakt übereinstimmen.
Ordnerplatzhalter werden nicht unterstützt.
Dateinamen können nicht angegeben werden.
Beispiele
<Folder map="folderA" to="folderB" /> <Folder map="folderA\folderB" to="..\..\folderC\" /> <Folder map="WebResources\subFolder" to="%base%\WebResources" />
Datei-zu-Datei-Zuordnung
Nachfolgende Informationen sind detaillierte Informationen zur Datei-zu-Datei-Zuordnung.
XML-Format
<FileToFile map="path\filename.ext" to="path\filename.ext" />
Beschreibung
Jede Datei, die mit dem im Parameter to angegebenen Namen und Pfad übereinstimmt, entspricht dem Parameter map.
Für den map Parameter:
Geben Sie einen Dateinamen an. Der Pfad ist optional. Wenn Sie keinen Pfad angeben, kann die Zuordnung Dateien aus einem beliebigen Ordner abgleichen.
Dateinamenplatzhalter werden nicht unterstützt.
Unterstützt den Ordner-Platzhalter.
Für den
toParameter:Geben Sie einen Dateinamen und Pfad an.
Der Dateiname kann sich vom Namen im
mapParameter unterscheiden.Dateinamenplatzhalter werden nicht unterstützt.
Unterstützt Platzhalter für Ordner.
Beispiele
<FileToFile map="assembly.dll" to="c:\path\folder\assembly.dll" />
<FileToFile map="PluginAssemblies\**\this.dll" to="..\..\Plugins\**\that.dll" />
<FileToFile map="Webresrouces\ardvark.jpg" to="%SRCBASE%\CrmPackage\WebResources\JPG format\aardvark.jpg" />
<FileToFile
map="pluginpackages\cr886_PluginPackageTest\package\cr886_PluginPackageTest.nupkg"
to="myplg\bin\Debug\myplg.1.0.0.nupkg" />
Im vorherigen NuGet-Paketbeispiel wird cr886_PluginPackageTest.nupkg nicht überschrieben, wenn die Datei bereits am angegebenen Speicherort vorhanden ist.
Datei-zu-Pfad-Zuordnung
Der folgende Abschnitt enthält ausführliche Informationen zur Datei-zu-Pfad-Zuordnung.
XML-Format
<FileToPath map="path\filename.ext" to="path" />
Beschreibung
Der map Parameter gibt die datei an, die übereinstimmen soll, und der to Parameter gibt den Pfad an, aus dem gelesen werden soll.
Für den map Parameter:
Geben Sie einen Dateinamen an. Der Pfad ist optional. Wenn Sie keinen Pfad angeben, kann die Zuordnung Dateien aus einem beliebigen Ordner abgleichen.
Unterstützt Dateinamen-Wildcards.
Unterstützt den Ordner-Platzhalter.
Für den to Parameter:
Geben Sie einen Pfad an.
Unterstützt Platzhalter für Ordner.
Geben Sie keinen Dateinamen an.
Beispiele
<FileToPath map="assembly.dll" to="c:\path\folder" />
<FileToPath map="PluginAssemblies\**\this.dll" to="..\..\Plugins\bin\**" />
<FileToPath map="*.jpg" to="%SRCBASE%\CrmPackage\WebResources\JPG format\" />
<FileToPath map="*.*" to="..\..\%ARCH%\%TYPE%\drop" />
Zuordnungsbeispiel
Das folgende XML-Codebeispiel zeigt eine vollständige Zuordnungsdatei, die es dem SolutionPackager-Tool ermöglicht, jede Webressource und die beiden standardmäßig generierten Assemblys aus einem Developer Toolkit-Projekt mit dem Namen CRMDevTookitSample zu lesen.
<?xml version="1.0" encoding="utf-8"?>
<Mapping>
<!-- Match specific named files to an alternate folder -->
<FileToFile map="CRMDevTookitSamplePlugins.dll" to="..\..\Plugins\bin\**\CRMDevTookitSample.plugins.dll" />
<FileToFile map="CRMDevTookitSampleWorkflow.dll" to="..\..\Workflow\bin\**\CRMDevTookitSample.Workflow.dll" />
<!-- Match any file in and under WebResources to an alternate set of subfolders -->
<FileToPath map="WebResources\*.*" to="..\..\CrmPackage\WebResources\**" />
<FileToPath map="WebResources\**\*.*" to="..\..\CrmPackage\WebResources\**" />
</Mapping>
Verwaltete und nicht verwaltete Lösungen
Sie können eine komprimierte Dataverse-Lösung (.zip) als verwaltete oder nicht verwaltete Lösung exportieren.
Verwaltete Lösung
Eine fertige Lösung, die zum Importieren in eine Organisation bereit ist. Nach dem Importieren können Sie keine Komponenten hinzufügen oder entfernen, Sie können jedoch optional weitere Anpassungen zulassen. Verwenden Sie diesen Typ, wenn die Entwicklung der Lösung abgeschlossen ist.
Nicht verwaltete Lösung
Eine offene Lösung ohne Einschränkungen dessen, was Sie hinzufügen, entfernen oder ändern können. Verwenden Sie diesen Typ während der Entwicklung einer Lösung.
Das Format einer komprimierten Lösungsdatei unterscheidet sich je nach Typ, entweder verwaltet oder nicht verwaltet. Der SolutionPackager kann komprimierte Lösungsdateien beider Typen verarbeiten. Das Tool kann jedoch keinen Typ in einen anderen konvertieren. Die einzige Möglichkeit zum Konvertieren von Lösungsdateien in einen anderen Typ, z. B. von nicht verwaltet in verwaltet, besteht darin, die nicht verwaltete Lösung .zip Datei in einen Dataverse-Server zu importieren und dann die Lösung als verwaltete Lösung zu exportieren.
Der SolutionPackager kann ZIP-Dateien nicht verwalteter und verwalteter Solutions als kombiniertes Set mithilfe des /PackageType:Both-Parameters verarbeiten. Um diesen Vorgang auszuführen, müssen Sie Ihre Lösung je einmal für jeden Typ exportieren. Benennen Sie die .zip Dateien wie folgt:
Nicht verwaltete .zip Datei: AnyName.zip
Verwaltete .zip Datei: AnyName_managed.zip
Das Tool geht davon aus, dass sich die verwaltete ZIP-Datei im gleichen Ordner wie die nicht verwaltete Datei befindet. Es extrahiert beide Dateien in einen einzelnen Ordner und behält die Unterschiede bei, bei denen verwaltete und nicht verwaltete Komponenten vorhanden sind.
Nachdem Sie eine Lösung als nicht verwaltete und verwaltete Lösung extrahiert haben, können Sie beide Typen oder jeden Typ einzeln aus diesem einzelnen Ordner packen. Verwenden Sie den /PackageType Parameter, um anzugeben, welcher Typ erstellt werden soll. Wenn Sie beide Dateien angeben, erzeugt das Tool zwei .zip Dateien mithilfe der vorherigen Benennungskonvention. Wenn Sie den Parameter /PackageType beim Packen aus einem Ordner mit verwalteten und nicht verwalteten Lösungen nicht einschließen, wird standardmäßig eine einzelne nicht verwaltete .zip-Datei erzeugt.
Problembehandlung
Meldung, die beim Bearbeiten von Ressourcendateien mit Visual Studio angezeigt wird
Wenn Sie Visual Studio zum Bearbeiten von Ressourcendateien verwenden, die vom Solution Packager erstellt wurden, wird Ihnen beim erneuten Packen möglicherweise etwa die folgende Meldung angezeigt: "Failed to determine version id of the resource file <filename>.resx the resource file must be exported from the solutionpackager.exe tool in order to be used as part of the pack process." Diese Meldung wird angezeigt, da Visual Studio die Metadatentags der Ressourcendatei durch Datentags ersetzt.
Problemumgehung
Öffnen Sie die Ressourcendatei in Ihrem bevorzugten Text-Editor, und suchen Sie die folgenden Tags, und aktualisieren Sie sie:
<data name="Source LCID" xml:space="preserve"> <data name="Source file" xml:space="preserve"> <data name="Source package type" xml:space="preserve"> <data name="SolutionPackager Version" mimetype="application/x-microsoft.net.object.binary.base64">Ändern Sie den Knotennamen von
<data>in<metadata>.Zum Beispiel: Die Zeichenfolge:
<data name="Source LCID" xml:space="preserve"> <value>1033</value> </data>wird geändert zu:
<metadata name="Source LCID" xml:space="preserve"> <value>1033</value> </metadata>Diese Änderung ermöglicht es dem Solution Packager, die Ressourcendatei zu lesen und zu importieren. Dieses Problem tritt nur auf, wenn Sie den Visual Studio Ressourcen-Editor verwenden.
Fehler: "Erforderliche Datei kann nicht gefunden werden ...\Other\Customizations.xml" mit einem YAML-Ordner
Dieser Fehler wird angezeigt, wenn Sie SolutionPackager (oder pac solution pack) für einen Ordner ausführen, der YAML-Dateien wie solution.yml enthält, diese Dateien jedoch nicht im erforderlichen solutions/<SolutionUniqueName>/ Unterordner, sondern im Stammverzeichnis des Ordners platzieren.
Ursache: Das Tool erkennt das YAML-Quellcodeverwaltungsformat, indem nach einem solutions/ Unterordner gesucht wird, der Dateien enthält *solution.yml . Wenn dieses Verzeichnis nicht vorhanden ist, greift das Tool im Hintergrund auf das XML-Format (Legacyformat) zurück und erwartet Other\Customizations.xml. Die Fehlermeldung bezieht sich auf eine XML-Datei und erwähnt YAML nicht, was verwirrend sein kann.
Lösung: Ordnen Sie den Ordner neu an, sodass sich die YAML-Manifestdateien unter den richtigen Pfaden befinden:
<rootFolder>/
solutions/<YourSolutionUniqueName>/ ← move solution.yml here
solution.yml
solutioncomponents.yml
rootcomponents.yml
missingdependencies.yml
publishers/<YourPublisherUniqueName>/
publisher.yml
Wenn Sie den Ordner aus einem Git-Integrations-Commit abgerufen haben oder pac solution clonedie Ordnerstruktur bereits korrekt ist. Ein Ordner, der nur die YAML-Dateien der obersten Ebene ohne das solutions/ Unterverzeichnis enthält, stellt einen unvollständigen Extrakt dar und kann nicht direkt gepackt werden.
Warnung: In rootcomponents.yml deklarierte Komponente enthält keine Quelldateien.
Diese Warnung wird angezeigt, wenn eine Komponente, z. B. eine Canvas-App, in rootcomponents.yml aufgeführt ist, aber keine entsprechenden Quelldateien im erwarteten Komponentenordner vorhanden sind (zum Beispiel canvasapps/<schema-name>/).
Wirkung: Das Tool ist weiterhin erfolgreich (Exitcode 0) und erzeugt eine gültige .zip Datei, die deklarierte Komponente wird jedoch aus der verpackten Lösung weggelassen.
Ursache: Der Ordner wurde durch einen Teilextrakt erstellt, oder die Quelldateien der Komponente waren nicht im Repository enthalten. Beispielsweise wurden nur die Lösungsmanifestdateien und nicht die Canvas-App selbst zugesichert.
Lösung: Stellen Sie sicher, dass alle in deklarierten rootcomponents.yml Komponenten über entsprechende Quelldateien im Ordner verfügen. Für Canvas-Apps muss die .msapp Datei unter canvasapps/<schema-name>/vorhanden sein. Wenn Dateien fehlen, exportieren Sie die vollständige Lösung aus Dataverse erneut und entpacken Sie sie, oder verwenden Sie pac solution clone, um einen vollständigen Extrakt zu erhalten.