SolutionPackager-ToolSolutionPackager tool

SolutionPackager ist ein Tool, mit dem eine komprimierte Lösungsdatei von Common Data Service reversibel in mehrere XML-Dateien und andere Dateien zerlegt werden kann, so dass diese Dateien durch ein Quellcodeverwaltungssystem leicht verwaltet werden können.SolutionPackager is a tool that can reversibly decompose a Common Data Service compressed solution file into multiple XML files and other files so that these files can be easily managed by a source control system. Die folgenden Abschnitte zeigen, wie Sie das Tool ausführen und es mit verwalteten und nicht verwalteten Lösungen verwenden.The following sections show you how to run the tool and how to use the tool with managed and unmanaged solutions.

Wo Sie das SolutionPackager-Tool findenWhere to find the SolutionPackager tool

Das SolutionPackager-Tool wird als Bestandteil des Microsoft.CrmSdk.CoreTools NuGet Pakets verteilt.The SolutionPackager tool is distributed as part of the Microsoft.CrmSdk.CoreTools NuGet package. Informationen zum Herunterladen des Tools erhalten Sie unter Herunterladen der Tools von NuGet.See Download tools from NuGet for information about how to download it.

SolutionPackager-BefehlszeilenargumenteSolutionPackager command-line arguments

SolutionPackager ist ein Befehlszeilentool, das mit den Parametern aufgerufen werden kann, die in der folgenden Tabelle identifiziert sind.SolutionPackager is a command-line tool that can be invoked with the parameters identified in the following table.

ArgumentArgument BeschreibungDescription
/action: {Extract|Pack}/action: {Extract|Pack} Erforderlich.Required. Die auszuführende Aktion.The action to perform. Die Aktion kann das Extrahieren einer Lösungs-ZIP-Datei in einen Ordner oder das Packen eines Ordners in eine ZIP-Datei sein.The action can be either to extract a solution .zip file to a folder, or to pack a folder into a .zip file.
/zipfile: <file path>/zipfile: <file path> Erforderlich.Required. Der Pfad und der Name einer Lösungs-ZIP-Datei.The path and name of a solution .zip file. Beim Extrahieren muss die Datei vorhanden sein, und aus ihr wird gelesen.When extracting, the file must exist and will be read from. Beim Packen wird die Datei ersetzt.When packing, the file is replaced.
/folder: <folder path>/folder: <folder path> Erforderlich.Required. Der Pfad zu einem Ordner.The path to a folder. Beim Extrahieren wird dieser Ordner erstellt und mit Komponentendateien aufgefüllt.When extracting, this folder is created and populated with component files. Beim Packen muss dieser Ordner bereits vorhanden sein und vorher extrahierte Komponentendateien enthalten.When packing, this folder must already exist and contain previously extracted component files.
/packagetype: {Unverwaltet|Verwaltet|Beide}/packagetype: {Unmanaged|Managed|Both} (Optional).Optional. Der Typ des zu verarbeitenden Pakets.The type of package to process. Der Standardwert ist "Nicht verwaltet".The default value is Unmanaged. Dieses Argument kann in den meisten Fällen weggelassen werden, da der Pakettyp aus der ZIP-Datei oder den Komponentendateien gelesen werden kann.This argument may be omitted in most occasions because the package type can be read from inside the .zip file or component files. 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.When extracting and Both is specified, managed and unmanaged solution .zip files must be present and are processed into a single folder. Beim Packen, wenn der Pfad angegeben ist, werden verwaltete und nicht verwaltete ZIP-Dateien aus demselben Ordner hergestellt.When packing and Both is specified, managed and unmanaged solution .zip files will be produced from one folder. Weitere Informationen finden Sie im Abschnitt zur Arbeit mit verwaltete und nicht verwalteten Lösungen weiter unten in diesem Thema.For more information, see the section on working with managed and unmanaged solutions later in this topic.
/allowWrite:{Ja|Nein}/allowWrite:{Yes|No} (Optional).Optional. Der Standardwert ist Ja.The default value is Yes. Dieses Argument wird nur während einer Extraktion verwendet.This argument is used only during an extraction. Wenn /allowWrite:No angegeben ist, führt das Tool alle Vorgänge aus, kann aber keine Dateien schreiben oder löschen.When /allowWrite:No is specified, the tool performs all operations but is prevented from writing or deleting any files. Der Extrahierungsvorgang kann sicher geprüft werden, ohne dass vorhandene Dateien überschrieben oder gelöscht werden.The extract operation can be safely assessed without overwriting or deleting any existing files.
/allowDelete:{Ja|Nein|Prompt}/allowDelete:{Yes|No|Prompt} (Optional).Optional. Der Standardwert ist Prompt.The default value is Prompt. Dieses Argument wird nur während einer Extraktion verwendet.This argument is used only during an extraction. 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.When /allowDelete:Yes is specified, any files present in the folder specified by the /folder parameter that are not expected are automatically deleted. Wenn /allowDelete:No angegeben ist, wird nichts gelöscht.When /allowDelete:No is specified, no deletes will occur. Wenn /allowDelete:Prompt angegeben ist, wird der Benutzer von der Konsole aufgefordert, alle Operationen zuzulassen oder abzulehnen.When /allowDelete:Prompt is specified, the user is prompted through the console to allow or deny all delete operations. Wenn /allowWrite:No angegeben ist, finden keine Löschungen statt, auch wenn /allowDelete:Yes ebenfalls angegeben ist.Note that if /allowWrite:No is specified, no deletes will occur even if /allowDelete:Yes is also specified.
/clobber/clobber (Optional).Optional. Dieses Argument wird nur während einer Extraktion verwendet.This argument is used only during an extraction. Wenn /clobber angegeben ist, werden Dateien, für die das Schreibschutzattribut gesetzt ist, überschrieben oder gelöscht.When /clobber is specified, files that have the read-only attribute set are overwritten or deleted. Wenn dies nicht der Fall ist, geschieht dies nicht.When not specified, files with the read-only attribute aren’t overwritten or deleted.
/errorlevel: {Aus|Fehler|Warnung|Info|Verbose}/errorlevel: {Off|Error|Warning|Info|Verbose} (Optional).Optional. Der Standardwert ist Info.The default value is Info. Dieses Argument zeigt die Ebene der auszugebenden Protokollierungsinformationen an.This argument indicates the level of logging information to output.
/map: <file path>/map: <file path> (Optional).Optional. Der Pfad und der Name einer XML-Datei, die Dateizuordnungsdirektiven enthält.The path and name of an .xml file containing file mapping directives. Bei Verwendung während einer Extrahierung werden Dateien, die typischerweise aus einem Ordner, der vom /folder-Parameterer angegeben wurde, von anderen Orten aus gelesen, die in der Zuordnungsdatei angegeben sind.When used during an extraction, files typically read from inside the folder specified by the /folder parameter are read from alternate locations as specified in the mapping file. Während eines Verpackungsvorgangs werden Dateien, die den Direktiven entsprechen, nicht geschrieben.During a pack operation, files that match the directives aren’t written.
/nologo/nologo (Optional).Optional. Das Banner zur Laufzeit unterdrücken.Suppress the banner at runtime.
/log: <file path>/log: <file path> (Optional).Optional. Ein Pfad und ein Name einer Protokolldatei.A path and name to a log file. Wenn die Datei bereits vorhanden ist, werden der Datei neue Protokollierungsinformationen angehängt.If the file already exists, new logging information is appended to the file.
@ <file path>@ <file path> (Optional).Optional. Ein Pfad und ein Name einer Datei, die die Befehlszeilenargumente für das Tool enthält.A path and name to a file that contains command-line arguments for the tool.
/sourceLoc: <string>/sourceLoc: <string> (Optional).Optional. Dieses Argument generiert eine Vorlagenressourcendatei und ist nur bei Extrahierungen gültig.This argument generates a template resource file, and is valid only on extract.

Mögliche Werte lauten auto oder ein LCID-/ISOcode für die Sprache, die Sie exportieren möchten.Possible values are auto or an LCID/ISO code for the language you want to export. Wenn dieses Argument verwendet wird, werden die Zeichenfolgenressourcen des gegebenen Gebietsschemas als neutrale .resx-Datei extrahiert.When this argument is used, the string resources from the given locale are extracted as a neutral .resx file. Wenn auto oder nur die Lang- oder Kurzform des Switches angegeben ist, wird das Basisgebietsschema oder die Lösung verwendet.If auto or just the long or short form of the switch is specified, the base locale or the solution is used. Sie können die Kurzform des Befehls verwenden: /src.You can use the short form of the command: /src.
/localize/localize OptionalOptional. Extrahieren Sie alle Zeichenfolgenressourcen in .resx-Dateien, oder führen Sie sie zusammen.Extract or merge all string resources into .resx files. Sie können die Kurzform des Befehls verwenden: /loc.You can use the short form of the command: /loc.

Verwenden des Befehlsarguments /mapUse the /map command argument

Nachfolgend wird die Verwendung des /map-Arguments für das SolutionPackager-Tool erläutert.The following discussion details the use of the /map argument to the SolutionPackager tool.

Dateien, die in einem automatischen System erstellt werden, wie etwa .xap Silverlight-Dateien und Plug-in-Assemblys, werden normalerweise nicht in das Quellcodeverwaltungssystem eingecheckt.Files that are built in an automated build system, such as .xap Silverlight files and plug-in assemblies, are typically not checked into source control. Webressourcen können sich bereits in der Quellcodeverwaltung an Orten befinden, die nicht direkt kompatibel mit dem SolutionPackager-Tool sind.Web resources may already be present in source control in locations that are not directly compatible with the SolutionPackager tool. 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 Extrahierungs-Ordner wie sonst.By including the /map parameter, the SolutionPackager tool can be directed to read and package such files from alternate locations and not from inside the Extract folder as it would typically be done. Der /map-Parameter muss den Pfad und den Namen einer XML-Datei angeben, die Zuordnungsdirektiven enthält, die SolutionPackager anweisen, diese Dateien nach dem Namen und Pfad zueinander zuzuordnen und den alternativen Ort für die Suche nach der zugeordneten Datei angeben.The /map parameter must specify the name and path to an XML file containing mapping directives that instruct the SolutionPackager to match files by their name and path, and indicate the alternate location to find the matched file. Die folgenden Informationen gelten gleichermaßen für alle Direktiven.The following information applies to all directives equally.

  • Es können mehrere Direktivenaufgeführt werden, einschließlich solcher, die identische Dateien zuordnen.Multiple directives may be listed including those that will match identical files. Früh in der Datei aufgeführte Direktiven haben Vorrang gegenüber den später aufgeführten Direktiven.Directives listed early in the file take precedence over those listed later.

  • Wenn eine Datei einer Direktove zugeordnet wird, muss sie sich an mindestens einem alternativen Ort befinden.If a file is matched to any directive, it must be found in at least one alternative location. Wenn keine entsprechenden Alternativen gefunden werden, gibt der SolutionPackager einen Fehler aus.If no matching alternatives are found, the SolutionPackager will issue an error.

  • Ordner- und Dateipfade können absolut oder relativ sein.Folder and file paths may be absolute or relative. Relative Pfade werden immer von dem im /folder-Parameter angegebenen Ordner evaluiert.Relative paths are always evaluated from the folder specified by the /folder parameter.

  • Umgebungsvariablen können mit einem %variable%-Syntax angegeben werden.Environment variables may be specified by using a %variable% syntax.

  • Ein „**”-Ordnerplatzhalter kann mit der Bedeutung „in beliebigem Ordner” verwendet werden.A folder wildcard “**” may be used to mean “in any sub-folder”. Dieser kann nur als letzter Teil eines Pfads verwendet werden, beispielsweise: „c:\folderA\**”.It can only be used as the final part of a path, for example: “c:\folderA\**”.

  • Dateinamenplatzhalter können nur in den Formularen „*.ext” oder „*.*” verwendet werden.File name wildcards may be used only in the forms “*.ext” or “*.*”. Kein anderes Muster wird unterstützt.No other pattern is supported.

    Die drei Typen von Direktivenzuordnungen werden hier beschrieben, zusammen mit einem Beispiel für ihre Verwendung.The three types of directives mappings are described here, along with an example that shows you how to use them.

OrdnerzuordnungFolder mapping

Nachfolgend sind detaillierte Informationen zur Ordnerzuordnung.The following provides detailed information on folder mapping.

Xml-FormatXml Format

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

BeschreibungDescription

Dateipfade, die „folderA” entsprechen, werden auf „folderB” geändert.File paths that match “folderA” will be switched to “folderB”.

  • Die Hierarchie der Unterordner muss exakt übereinstimmen.The hierarchy of subfolders under each must exactly match.

  • Ordnerplatzhalter werden nicht unterstützt.Folder wildcards are not supported.

  • Es können keine Dateinamen angegeben werden.No file names may be specified.

    BeispieleExamples

    <Folder map="folderA" to="folderB" />  
    <Folder map="folderA\folderB" to="..\..\folderC\" />  
    <Folder map="WebResources\subFolder" to="%base%\WebResources" />  
    

Datei-zu-Datei-ZuordnungFile To file mapping

Nachfolgend sind detaillierte Informationen zur Datei-zu-Datei-Zuordnung.The following provides detailed information on file-to-file mapping.

Xml-FormatXml Format

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

BeschreibungDescription

Jede beliebige Datei, die dem Parameter map entspricht, wird von dem im Parameter to angegebenen Namen und Pfad gelesen.Any file matching the map parameter will be read from the name and path specified in the to parameter.

Für den Parameter map:For the map parameter:

  • Ein Dateiname muss angegeben werden.A file name must be specified. Der Pfad ist optional.The path is optional. Falls kein Pfad angegeben wird, können Dateien aus allen Ordnern zugeordnet werden.If no path is specified, files from any folder may be matched.

  • Dateinamenplatzhalter werden nicht unterstützt.File name wildcards are not supported.

  • Der Ordnerplatzhalter wird unterstützt.The folder wildcard is supported.

    Für den Parameter to:For the to parameter:

  • Ein Dateiname und ein Pfad muss angegeben werden.A file name and path must be specified.

  • Der Dateiname weicht möglicherweise von dem Namen im Parameter map ab.The file name may differ from the name in the map parameter.

  • Dateinamenplatzhalter werden nicht unterstützt.File name wildcards are not supported.

  • Der Ordnerplatzhalter wird unterstützt.The folder wildcard is supported.

BeispieleExamples

  <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-ZuordnungFile to path mapping

Nachfolgend sind detaillierte Informationen zur Datei-zu-Pfad-Zuordnung.The following provides detailed information on file-to-path mapping.

Xml-FormatXml Format

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

BeschreibungDescription

Jede beliebige Datei, die dem Parameter map entspricht, wird von dem im Parameter to angegebenen Pfad gelesen.Any file matching the map parameter is read from the path specified in the to parameter.

Für den Parameter map:For the map parameter:

  • Ein Dateiname muss angegeben werden.A file name must be specified. Der Pfad ist optional.The path is optional. Falls kein Pfad angegeben wird, können Dateien aus allen Ordnern zugeordnet werden.If no path is specified, files from any folder may be matched.

  • Dateinamenplatzhalter werden unterstützt.File name wildcards are supported.

  • Der Ordnerplatzhalter wird unterstützt.The folder wildcard is supported.

Für den Parameter to:For the to parameter:

  • Ein Pfad muss angegeben werden.A path must be specified.

  • Der Ordnerplatzhalter wird unterstützt.The folder wildcard is supported.

  • Ein Dateiname darf nicht angegeben werden.A file name must not be specified.

    BeispieleExamples

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

ZuordnungsbeispielExample mapping

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 Developer Toolkit-Projekt mit dem Namen CRMDevTookitSample zu lesen.The following XML code sample shows a complete mapping file that enables the SolutionPackager tool to read any web resource and the two default generated assemblies from a Developer Toolkit project named CRMDevTookitSample.

<?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ösungenManaged and unmanaged solutions

Eine Common Data Service komprimierte Lösungs-ZIP-Datei kann auf eine von zwei Weisen exportiert werden.A Common Data Service compressed solution (.zip) file can be exported in one of two types as shown here.

Verwaltete LösungManaged solution
Eine abgeschlossene Lösung, die bereit ist, in eine Organisation importiert zu werden.A completed solution ready to be imported into an organization. Nach dem Importieren können keine Komponenten hinzugefügt oder entfernt werden, aber sie können optional weitere Anpassung erlauben.Once imported, components can’t be added or removed, although they can optionally allow further customization. Dies wird empfohlen, nachdem die Entwicklung der Lösung abgeschlossen ist.This is recommended when development of the solution is complete.

Nicht verwaltete LösungUnmanaged solution
Eine offene Lösung ohne Einschränkungen dahingehend, was hinzugefügt, entfernt oder geändert werden kann.An open solution with no restrictions on what can be added, removed, or modified. Dieses wird während der Entwicklung einer Lösung empfohlen.This is recommended during development of a solution.

Das Format einer komprimierten Lösungsdatei basiert auf dem Typ,verwaltet oder nicht verwaltet.The format of a compressed solution file will be different based on its type, either managed or unmanaged. Der SolutionPackager kann komprimierte Lösungsdateien beider Typen verarbeiten.The SolutionPackager can process compressed solution files of either type. Das Tool kann jedoch nicht einen Typ mzu einem anderen konvertieren.However, the tool can’t convert one type to another. 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 Common Data Service-Server und dem anschließenden Export der Lösung als verwaltete Lösung.The only way to convert solution files to a different type, for example from unmanaged to managed, is by importing the unmanaged solution .zip file into a Common Data Service server and then exporting the solution as a managed solution.

Der SolutionPackager kann verwaltete und nicht verwaltete Lösungs-ZIP-Dateien als kombinierten Satz über den /PackageType:Both-Parameter verarbeiten.The SolutionPackager can process unmanaged and managed solution .zip files as a combined set via the /PackageType:Both parameter. Dazu ist es erforderlich, Ihre Lösung zweimal in jedem Typ zu exportieren, wobei die ZIP-Dateien wie folgt benannt werden.To perform this operation, it is necessary to export your solution twice as each type, naming the .zip files as follows.

Nicht verwaltete ZIP-Datei: AnyName.zipUnmanaged .zip file: AnyName.zip Verwaltete ZIP-Datei: AnyName_managed.zipManaged .zip file: 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.The tool will assume the presence of the managed zip file in the same folder as the unmanaged file and extract both files into a single folder preserving the differences where managed and unmanaged components exist.

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 /PackageType-Parameter für die Angabe verwendet wird, welcher Typ erstellt werden soll.After a solution has been extracted as both unmanaged and managed, it is possible from that single folder to pack both, or each type individually, using the /PackageType parameter to specify which type to create. Wenn beide angegeben werden, werden zwei ZIP-Dateien mit der gleichen Namenskonvention wie oben erstellt.When specifying both, two .zip files will be produced using the naming convention as above. 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.If the /PackageType parameter is missing when packing from a dual managed and unmanaged folder, the default is to produce a single unmanaged .zip file.

ProblembehandlungTroubleshooting

Wenn Sie Visual Studio 2012 verwenden, um die Ressourcendateien zu bearbeiten, die vom Lösungspacker erstellt werden, wird möglicherweise eine Meldung angezeigt, wenn Sie ähnlich erneut einpacken werden: “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.” Dies tritt auf, weil Visual Studio die Metadatentags der Ressourcendatei mit Datenentags ersetzt.If you use Visual Studio 2012 to edit resource files created by the solution packager, you may receive a message when you repack similar to this: “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.” This happens because Visual Studio replaces the resource file’s metadata tags with data tags.

ProblemumgehungWorkaround

  1. Öffnen Sie die Ressourcendatei in einem Texteditor Ihrer Wahl, und suchen und aktualisieren Sie die folgenden Tags:Open the resource file in your favorite text editor and locate and update the following 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>.Change the node name from <data> to <metadata>.

    Zum Beispiel: Die Zeichenfolge:For example, this string:

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

    wird geändert zu:Changes to:

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

    Dies ermöglicht dem Lösungspacker, die Ressourcendatei zu lesen und zu importieren.This allows the solution packager to read and import the resource file. Dieses Problem wurde nur beobachtet, wenn der Visual Studio-Ressourceneditor verwendet wurde..This problem has only been observed when using the Visual Studio Resource editor.

Siehe auchSee also

Verwendung der Quellverwaltung mit LösungsdateienUse Source Control with Solution Files

Dateireferenz von LösungskomponentenSolution Component File Reference

Einführung in die LösungenIntroduction to Solutions