Freigeben über


Verwenden des SolutionPackager-Tools, um eine Lösungsdatei zu komprimieren und zu extrahieren

 

Veröffentlicht: Januar 2017

Gilt für: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

SolutionPackager ist ein Tool, mit dem eine komprimierte Microsoft Dynamics 365-Lösungsdatei reversibel in mehrere XML-Dateien und andere Dateien zerlegt werdenkann, sodass diese Dateien durch ein Quellcodeverwaltungssystem leicht verwaltet werden können. Die folgenden Abschnitte zeigen, wie Sie das Tool ausführen und es mit verwalteten und nicht verwalteten Lösungen verwenden.

In diesem Thema

Wo Sie das SolutionPackager-Tool finden

SolutionPackager-Befehlszeilenargumente

Verwenden des Befehlsarguments /map

  • Ordnerzuordnung

  • Datei-zu-Datei-Zuordnung

  • Datei-zu-Pfad-Zuordnung

  • Zuordnungsbeispiel

Verwaltete und nicht verwaltete Lösungen

Wo Sie das SolutionPackager-Tool finden

Sie finden das SolutionPackager.exe-Tool im Bin-Ordner des Microsoft Dynamics 365 SDKDownloads.Laden Sie das Microsoft Dynamics CRM SDK-Paket herunter.

SolutionPackager-Befehlszeilenargumente

SolutionPackager ist ein Befehlszeilentool, das mit den Parametern aufgerufen werden kann, die in der folgenden Tabelle identifiziert sind.

Argument

Beschreibung

/action: {Extract|Pack}

Erforderlich. Die auszuführende Aktion. Die Aktion kann das Extrahieren einer Lösungs-.zip-Datei in einen Ordner oder das Packen eines Ordners in eine .zip-Datei sein.

/zipfile: <file path>

Erforderlich. Der Pfad und der Name einer Lösungs-.zip-Datei. Beim Extrahieren muss die Datei vorhanden sein, und aus ihr wird gelesen. Beim Packen wird die Datei ersetzt.

/folder: <folder path>

Erforderlich. Der Pfad zu einem Ordner. Beim Extrahieren wird dieser Ordner erstellt und mit Komponentendateien aufgefüllt. Beim Packen muss dieser Ordner bereits vorhanden sein und vorher extrahierte Komponentendateien enthalten.

/packagetype: {Unmanaged|Managed|Both}

Optional Der Typ des zu verarbeitenden Pakets. Der Standardwert ist "Nicht verwaltet". Dieses Argument kann in den meisten Fällen weggelassen werden, da der Pakettyp aus der .zip-Datei oder den Komponentendateien gelesen werden kann. BeimWenn Extrahieren und Both angegeben ist, müssen verwaltete und nicht verwaltete .zip-Lösungsdateien vorhanden sein und werden in einen einzelnen Ordner gesetzt. Wenn Packen und Both angegeben ist, werden verwaltete und nicht verwaltete .zip-Dateien aus einem Ordner produziert. Weitere Informationen finden Sie im Abschnitt zur Arbeit mit verwaltete und nicht verwalteten Lösungen weiter unten in diesem Thema.

/allowWrite:{Yes|No}

Optional Der Standardwert ist Yes. Dieses Argument wird nur während einer Extraktion verwendet. Wenn /allowWrite:No angegeben ist, führt das Tool alle Vorgänge aus, kann aber keine Dateien schreiben oder löschen. Der Extrahierungsvorgang kann sicher geprüft werden, ohne dass vorhandene Dateien überschrieben oder gelöscht werden.

/allowDelete:{Yes|No|Prompt}

Optional Der Standardwert ist Prompt. Dieses Argument wird nur während einer Extraktion verwendet. Wenn /allowDelete:Yes angegeben ist, werden alle Dateien, die im vom /folder-Parameter angegebenen Ordner vorhanden sind, und die nicht erwartet werden, automatisch gelöscht. Wenn /allowDelete:No angegeben ist, wird nichts gelöscht. Wenn /allowDelete:Prompt angegeben ist, wird der Benutzer von der Konsole aufgefordert, alle Operationen zuzulassen oder abzulehnen. Wenn /allowWrite:No angegeben ist, finden keine Löschungen statt, auch wenn /allowDelete:Yes ebenfalls angegeben ist.

/clobber

Optional Dieses Argument wird nur während einer Extraktion verwendet. Wenn /clobber angegeben ist, werden Dateien, für die das Schreibschutzattribut gesetzt ist, überschrieben oder gelöscht. Wenn dies nicht der Fall ist, geschieht dies nicht.

/errorlevel: {Off|Error|Warning|Info|Verbose}

Optional Der Standardwert ist Info. Dieses Argument zeigt die Ebene der auszugebenden Protokollierungsinformationen an.

/map: <file path>

Optional Der Pfad und der Name einer .xml-Datei, die Dateizuordnungsdirektiven enthält. Bei Verwendung während einer Extrahierung werden Dateien, die typischerweise aus einem Ordner, der vom Parameterer /folder angegeben wurde, von anderen Orten aus gelesen, die in der Zuordnungsdatei angegeben sind. Während eines Verpackungsvorgangs werden Dateien, die den Direktiven entsprechen, nicht geschrieben.

/nologo

Optional Das Banner zur Laufzeit unterdrücken.

/log: <file path>

Optional Ein Pfad und ein Name einer Protokolldatei. Wenn die Datei bereits vorhanden ist, werden der Datei neue Protokollierungsinformationen angehängt.

@ <file path>

Optional Ein Pfad und ein Name einer Datei, die die Befehlszeilenargumente für das Tool enthält.

/sourceLoc: <string>

Optional Dieses Argument generiert eine Vorlagenressourcendatei und ist nur bei Extrahierungen gültig.

Mögliche Werte lauten auto oder ein LCID-/ISOcode für die Sprache, die Sie exportieren möchten. Wenn dieses Argument verwendet wird, werden die Zeichenfolgenressourcen des gegebenen Gebietsschemas als neutrale .resx-Datei extrahiert. Wenn auto oder nur die Lang- oder Kurzform des Switches angegeben ist, wird das Basisgebietsschema oder die Lösung verwendet. Sie können die Kurzform des Befehls verwenden: /src.

/localize

Optional Extrahieren Sie alle Zeichenfolgenressourcen in .resx-Dateien, oder führen Sie sie zusammen. Sie können die Kurzform des Befehls verwenden: /loc.

Verwenden des Befehlsarguments /map

Nachfolgend wird die Verwendung des Arguments /map für das SolutionPackager-Tool erläutert.

Dateien, die in einem automatischen System erstellt werden, wie etwa .xapSilverlight-Dateien und Plug-in-Assemblys, werden normalerweise nicht in das Quellcodeverwaltungssystem eingecheckt. Webressourcen können sich bereits in der Quellcodeverwaltung an Orten befinden, die nicht direkt kompatibel mit dem SolutionPackager-Tool sind. Durch das Einschließen des /map-Parameters kann das SolutionPackager-Tool angewiesen werden, solche Dateien von anderen orten zu lesen und zu packen, und nicht aus dem Extract-Ordner wie sonst. Der /map-Parameter muss den Pfad und den Namen einer XML-Datei angeben, die Zuordnungsdirektiven enthält,die SolutionPackager anweisen, diese Dateien nach Name und Pfad einander zuzuordnen und den alternativen Ort für die Suche nach der zugeordneten Datei angeben. Die folgenden Informationen gelten gleichermaßen für alle Direktiven.

  • Es können mehrere Direktivenaufgeführt werden, einschließlich solcher, die identische Dateien zuordnen. Früh in der Datei aufgeführte Direktiven haben Vorrang gegenüber den später aufgeführten Direktiven.

  • Wenn eine Datei einer Direktove zugeordnet wird, muss sie sich an mindestens einem alternativen Ort befinden. Wenn keine entsprechenden Alternativen gefunden werden, gibt SolutionPackager einen Fehler aus.

  • Ordner- und Dateipfade können absolut oder relativ sein. Relative Pfade werden immer von dem im Parameter /folder angegebenen Ordner evaluiert.

  • Umgebungsvariablen können mit der %variable%-Syntax angegeben werden.

  • Ein "**"-Ordnerplatzhalter kann mit der Bedeutung "in beliebigem Ordner" verwendet werden. Dieser kann nur als letzter Teil eines Pfads verwendet werden, beispielsweise: "c:\folderA\**".

  • Dateinamenplatzhalter können nur in den Formularen “*.ext” oder *.* "" verwendet werden. Kein anderes Muster wird unterstützt.

Die drei Typen von Direktivenzuordnungen werden hier beschrieben, zusammen mit einem Beispiel für ihre Verwendung.

Ordnerzuordnung

Die folgende Tabelle enthält detaillierte Informationen zur Ordnerzuordnung.

Xml-Format

<Folder map="folderA" to="folderB" />

Beschreibung

Dateipfade, die "folderA" entsprechen, werden zu "folderB" geändert.

  • Die Hierarchie der Unterordner muss exakt übereinstimmen.

  • Ordnerplatzhalter werden nicht unterstützt.

  • Es können keine Dateinamen 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

Die folgende Tabelle enthält detaillierte Informationen zur Datei-zu-Datei-Zuordnung.

XML-Format

<FileToFile map="path\filename.ext" to="path\filename.ext" />

Beschreibung

Jede beliebige Datei, die dem Parameter map entspricht, wird von dem im Parameter to angegebenen Namen und Pfad gelesen.

Für den Parameter map:

  • Ein Dateiname muss angegeben werden. Der Pfad ist optional. Falls kein Pfad angegeben wird, können Dateien aus allen Ordnern zugeordnet werden.

  • Dateinamenplatzhalter werden nicht unterstützt.

  • Der Ordnerplatzhalter wird unterstützt.

Für den Parameter to:

  • Ein Dateiname und ein Pfad muss angegeben werden.

  • Der Dateiname weicht möglicherweise von dem Namen im Parameter map ab.

  • Dateinamenplatzhalter werden nicht unterstützt.

  • Der Ordnerplatzhalter wird unterstützt.

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" />

Datei-zu-Pfad-Zuordnung

Die folgende Tabelle enthält detaillierte Informationen zur Datei-zu-Pfad-Zuordnung.

XML-Format

<FileToPath map="path\filename.ext" to="path" />

Beschreibung

Jede beliebige Datei, die dem Parameter map entspricht, wird von dem im Parameter to angegebenen Pfad gelesen.

Für den Parameter map:

  • Ein Dateiname muss angegeben werden. Der Pfad ist optional. Falls kein Pfad angegeben wird, können Dateien aus allen Ordnern zugeordnet werden.

  • Dateinamenplatzhalter werden unterstützt.

  • Der Ordnerplatzhalter wird unterstützt.

Für den Parameter to:

  • Ein Pfad muss angegeben werden.

  • Der Ordnerplatzhalter wird unterstützt.

  • Ein Dateiname darf nicht angegeben werden.

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 das SolutionPackager-Tool in die Lage versetzt, jede Webressource und die beiden generierten Standardassemblys aus einem CRMDevTookitSample-Projekt mit dem Namen Developer Toolkit 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 sub-folders -->
       <FileToPath map="WebResources\*.*" to="..\..\CrmPackage\WebResources\**" />
       <FileToPath map="WebResources\**\*.*" to="..\..\CrmPackage\WebResources\**" />
</Mapping>

Verwaltete und nicht verwaltete Lösungen

Eine komprimierte (.zip)-Lösungs-Microsoft Dynamics 365-Datei kann auf eine von zwei Weisen exportiert werden.

  • Verwaltete Lösung
    Eine abgeschlossene Lösung, die bereit ist, in eine Organisation importiert zu werden. Nach dem Importieren können keine Komponenten hinzugefügt oder entfernt werden, aber sie können optional weitere Anpassung erlauben. Dies wird empfohlen, nachdem die Entwicklung der Lösung abgeschlossen ist.
  • Nicht verwaltete Lösung
    Eine offene Lösung ohne Einschränkungen dahingehend, was hinzugefügt, entfernt oder geändert werden kann. Dieses wird während der Entwicklung einer Lösung empfohlen.

Das Format einer komprimierten Lösungsdatei basiert auf dem Typ,verwaltet oder nicht verwaltet. Der SolutionPackager kann komprimierte Lösungsdateien beider Typen verarbeiten. Das Tool kann jedoch nicht einen Typ mzu einem anderen konvertieren. Die einzige Möglichkeit, Lösungsdateien zu einem anderen Typs zu konvertieren, etwa von verwaltete zu nicht verwaltete, besteht im Import der nicht verwalteten Lösungs-.zip-Datei in einen Microsoft Dynamics 365-Server und dem anschließenden Export der Lösung als verwaltete Lösung.

Der SolutionPackager kann verwaltete und nicht verwaltete Lösungs-.zip-Dateien als kombinierten Satz über den /PackageType:Both-Parameter verarbeiten. Dazu ist es erforderlich, Ihre Lösung zweimal in jedem Typ zu exportieren, wobei die .zip-Dateien wie folgt benannt werden.

Nicht verwaltete .zip-Datei: AnyName.zip

Verwaltete .zip-Datei: AnyName_managed.zip

Das Tool nimmt das Vorhandensein der verwalteten zip-Datei im gleichen Ordner wie die nicht verwaltete Datei an und extrahiert beide Dateien in einen einzelnen Ordner, wobei die Unterschiede beibehalten werden, wo verwaltete und nicht verwaltete Komponenten vorhanden sind.

Nachdem eine Lösung als nicht verwaltet und verwaltet extrahiert wurde, ist es möglich, beide aus diesem Ordner zu verpacken (oder beide einzeln), indem der Parameter /PackageType für die Angabe verwendet wird, welcher Typ erstellt werden soll. Wenn beide angegeben werden, werden zwei .zip-Dateien mit der gleichen Namenskonvention wie oben erstellt. Wenn der /PackageType-Parameter bei Packen von einem dualen Ordner (verwaltet und nicht verwaltet) fehlt, ist das Standardvorgehen die Erstellung einer einzelnen nicht verwalteten .zip-Datei.

Problembehandlung

Wenn Sie Microsoft Visual Studio 2012 verwenden, um Ressourcendateien zu bearbeiten, die vom Lösungspacker erstellt wurden, wird ggf. beim erneuten Packen eine Meldung ähnlich der folgenden angezeigt: „Die Versions-ID der Ressourcendatei <Dateiname>.resx konnte nicht bestimmt werden. Die Ressourcendatei muss vom solutionpacker.exe-Tool exportiert werden, um als Teil des Verpackungsvorgangs verwendet werden zu können.“ Dies tritt auf, da Visual Studio die Metadatentags der Ressourcendatei durch Datentags ersetzt.

Problemumgehung

  1. Öffnen Sie die Ressourcendatei in einem Texteditor Ihrer Wahl, und suchen und aktualisieren Sie die folgenden Tags:

    <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">
    
  2. Ändern Sie den Knotennamen von <data> zu <metadata>.

    Zum Beispiel wird diese Zeichenfolge:

    <data name="Source LCID" xml:space="preserve">
      <value>1033</value>
    </data> 
    

    Geändert zu:

    <metadata name="Source LCID" xml:space="preserve">
      <value>1033</value>
    </metadata>
    

Dies ermöglicht dem Lösungspacker, die Ressourcendatei zu lesen und zu importieren. Dieses Problem wurde nur beobachtet, wenn der Visual Studio-Ressourceneditor verwendet wurde..

Siehe auch

Lösungstools für die Teamentwicklung
Verwendung der Quellcodeverwaltung mit Lösungsdateien
Solution component file reference (SolutionPackager)
Einführung in Lösungen

Microsoft Dynamics 365

© 2017 Microsoft. Alle Rechte vorbehalten. Copyright