Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique s’applique à Dynamics 365 Customer Engagement (on-premises). Pour obtenir la version Power Apps de cette rubrique, consultez : Outil SolutionPackager
SolutionPackager est un outil qui permet de décomposer de manière réversible un fichier de solution compressé Dynamics 365 Customer Engagement (on-premises) en plusieurs fichiers XML et autres fichiers afin que ces fichiers puissent être facilement gérés par un système de contrôle de code source. Les sections suivantes vous montrent comment exécuter l’outil et comment l’utiliser avec des solutions gérées et non gérées.
Où trouver l’outil SolutionPackager
L’outil SolutionPackager est distribué dans le cadre du package NuGet Microsoft.CrmSdk.CoreTools . Consultez Outils de développement Dataverse pour plus d’informations sur la façon de le télécharger.
Arguments de ligne de commande SolutionPackager
SolutionPackager est un outil de ligne de commande qui peut être appelé avec les paramètres identifiés dans le tableau suivant.
| Raisonnement | Descriptif |
|---|---|
| /action : {Extraire|Emballer} | Obligatoire. L’action à accomplir. L’action peut consister soit à extraire un fichier solution .zip dans un dossier, soit à emballer un dossier dans un fichier .zip. |
| /zipfile : chemin d’accès <au fichier> | Obligatoire. Chemin d’accès et nom d’un fichier .zip de solution. Lors de l’extraction, le fichier doit exister et être lu. Lors de la compression, le fichier est remplacé. |
| /folder : <chemin d’accès au dossier> | Obligatoire. Chemin d’accès du dossier. Lors de l’extraction, ce dossier est créé et rempli avec des fichiers de composants. Lors de l’empaquetage, ce dossier doit déjà exister et contenir les fichiers de composants précédemment extraits. |
| /packagetype : {Non géré|Géré|Les deux} | Optionnel. Le type de colis à traiter. La valeur par défaut est Non géré. Cet argument peut être omis dans la plupart des cas, car le type de package peut être lu à partir du fichier .zip ou des fichiers de composants. Lors de l’extraction, si Both est spécifié, les fichiers .zip de solutions gérées et non gérées doivent être présents et sont traités dans un dossier unique. Lors de la compression, si Both est spécifié, les fichiers .zip de solutions gérées et non gérées sont produits d’un dossier. Pour plus d’informations, consultez la section sur l’utilisation des solutions gérées et non gérées plus loin dans cette rubrique. |
| /allowWrite :{Oui|Non} | Optionnel. La valeur par défaut est Oui. Cet argument n’est utilisé que lors d’une extraction. Lorsque /allowWrite :No est spécifié, l’outil effectue toutes les opérations mais ne peut pas écrire ou supprimer de fichiers. L’opération d’extraction peut être évaluée en toute sécurité sans écraser ni supprimer de fichiers existants. |
| /allowDelete:{Yes|No|Prompt} | Optionnel. La valeur par défaut est Prompt. Cet argument n’est utilisé que lors d’une extraction. Lorsque /allowDelete :Yes est spécifié, tous les fichiers présents dans le dossier spécifié par le paramètre /folder qui ne sont pas attendus sont automatiquement supprimés. Lorsque /allowDelete :No est spécifié, aucune suppression n’aura lieu. Lorsque /allowDelete :Prompt est spécifié, l’utilisateur est invité via la console à autoriser ou à refuser toutes les opérations de suppression. Notez que si /allowWrite :No est spécifié, aucune suppression ne se produira même si /allowDelete :Yes est également spécifié. |
| /clobber | Optionnel. Cet argument n’est utilisé que lors d’une extraction. Lorsque /clobber est spécifié, les fichiers dont l’attribut lecture seule est défini sont remplacés ou supprimés. Lorsqu’il n’est pas spécifié, les fichiers avec l’attribut lecture seule ne sont pas remplacés ou supprimés. |
| /errorlevel : {Off|Erreur |Avertissement |Informations|Verbose} | Optionnel. La valeur par défaut est Info. Cet argument indique le niveau des informations de journalisation. |
| /map : chemin d’accès <au fichier> | Optionnel. Chemin d’accès et nom d’un fichier .xml contenant des directives de mappage de fichiers. Lorsqu’ils sont utilisés lors d’une extraction, les fichiers généralement lus à l’intérieur du dossier spécifié par le paramètre /folder sont lus à partir d’autres emplacements spécifiés dans le fichier de mappage. Lors d’une opération de pack, les fichiers qui correspondent aux directives ne sont pas écrits. |
| /nologo | Optionnel. Supprimer la bannière au moment de l’exécution. |
| /log : chemin d’accès <au fichier> | Optionnel. Chemin d’accès et nom d’un fichier journal. Si le fichier existe déjà, de nouvelles informations de journalisation sont ajoutées au fichier. |
| <@ chemin d’accès au fichier> | Optionnel. Chemin d’accès et nom d’un fichier contenant des arguments de ligne de commande pour l’outil. |
| /sourceLoc: <chaîne> | Optionnel. Cet argument génère un fichier de ressources de modèle et n’est valide qu’à l’extraction. Les valeurs possibles sont auto ou un code LCID/ISO pour la langue que vous souhaitez exporter. Lorsque cet argument est utilisé, les ressources de chaîne de caractères de la locale donnée sont extraites sous la forme d’un fichier .resx neutre. Si auto ou la forme longue ou courte du commutateur est spécifié, les paramètres régionaux de base ou la solution sont utilisés. Vous pouvez utiliser la forme abrégée de la commande : /src. |
| /localize | Optionnel. Extrayez ou fusionnez toutes les ressources de chaînes dans les fichiers .resx. Vous pouvez utiliser la forme abrégée de la commande : /loc. |
Utilisation de l’argument de commande /map
La discussion suivante détaille l’utilisation de l’argument /map dans l’outil SolutionPackager.
Les fichiers générés dans un système de compilation automatisé, tels que les fichiers .xap et les assemblies de plug-in Silverlight, ne sont généralement pas archivés dans le contrôle de code source. Il se peut que des ressources Web soient déjà présentes dans le contrôle de code source dans des emplacements qui ne sont pas directement compatibles avec l’outil SolutionPackager. En incluant le paramètre /map, l’outil SolutionPackager peut être invité à lire et à empaqueter ces fichiers à partir d’autres emplacements et non à partir du dossier Extract comme cela serait généralement fait. Le paramètre /map doit spécifier le nom et le chemin d’accès à un fichier XML contenant des directives de mappage qui indiquent au SolutionPackager de faire correspondre les fichiers par leur nom et leur chemin d’accès, et d’indiquer l’autre emplacement pour trouver le fichier correspondant. Les informations suivantes s’appliquent également à toutes les directives.
Plusieurs directives peuvent être répertoriées, y compris celles qui correspondront à des fichiers identiques. Les directives énumérées au début du fichier ont la priorité sur celles énumérées plus tard.
Si un fichier correspond à une directive, il doit se trouver dans au moins un autre emplacement. Si aucune alternative correspondante n’est trouvée, le SolutionPackager émettra une erreur.
Les chemins d’accès aux dossiers et aux fichiers peuvent être absolus ou relatifs. Les chemins d’accès relatifs sont toujours évalués à partir du dossier spécifié par le paramètre /folder.
Les variables d’environnement peuvent être spécifiées à l’aide d’une syntaxe %variable%.
Un caractère générique de dossier « ** » peut être utilisé pour signifier « dans n’importe quel sous-dossier ». Il ne peut être utilisé que comme partie finale d’un chemin, par exemple : « c :\folderA\** ».
Les caractères génériques de nom de fichier ne peuvent être utilisés que sous la forme « *.ext » ou « *.* ». Aucun autre modèle n’est pris en charge.
Les trois types de mappages de directives sont décrits ici, ainsi qu’un exemple qui vous montre comment les utiliser.
Mappage de dossiers
Vous trouverez ci-dessous des informations détaillées sur le mappage de dossiers.
Xml Format
<Folder map="folderA" to="folderB" />
Descriptif
Les chemins d’accès aux fichiers qui correspondent à « dossierA » seront remplacés par « dossierB ».
La hiérarchie des sous-dossiers doit correspondre exactement.
Les caractères génériques de dossiers ne sont pas pris en charge.
Aucun nom de fichier ne peut être spécifié.
Exemples
<Folder map="folderA" to="folderB" /> <Folder map="folderA\folderB" to="..\..\folderC\" /> <Folder map="WebResources\subFolder" to="%base%\WebResources" />
Mappage de fichier à fichier
Vous trouverez ci-dessous des informations détaillées sur le mappage de fichier à fichier.
Xml Format
<FileToFile map="path\filename.ext" to="path\filename.ext" />
Descriptif
Tout fichier correspondant au map paramètre sera lu à partir du nom et du chemin d’accès spécifiés dans le to paramètre.
Pour le map paramètre :
Un nom de fichier doit être spécifié. Le chemin d’accès est facultatif. Si aucun chemin n’est spécifié, les fichiers de n’importe quel dossier peuvent être mis en correspondance.
Les caractères génériques de noms de fichier ne sont pas pris en charge.
Le caractère générique de dossier est pris en charge.
Pour le
toparamètre :Un nom de fichier et un chemin d’accès doivent être spécifiés.
Le nom du fichier peut différer du nom du
mapparamètre.Les caractères génériques de noms de fichier ne sont pas pris en charge.
Le caractère générique de dossier est pris en charge.
Exemples
<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" />Notez que dans l’exemple de package NuGet ci-dessus, cr886_PluginPackageTest.nupkg n’est pas remplacé si le fichier existe déjà à l’emplacement spécifié.
Mappage fichier-à-chemin d’accès
Le tableau suivant présente des informations détaillées sur le mappage fichier-à-chemin d’accès.
Xml Format
<FileToPath map="path\filename.ext" to="path" />
Descriptif
Tout fichier correspondant au map paramètre est lu à partir du chemin spécifié dans le to paramètre.
Pour le map paramètre :
Un nom de fichier doit être spécifié. Le chemin d’accès est facultatif. Si aucun chemin n’est spécifié, les fichiers de n’importe quel dossier peuvent être mis en correspondance.
Les caractères génériques de noms de fichier sont pris en charge.
Le caractère générique de dossier est pris en charge.
Pour le
toparamètre :Un chemin d’accès doit être spécifié.
Le caractère générique de dossier est pris en charge.
Un nom de fichier ne doit pas être spécifié.
Exemples
<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" />
Exemple de mappage
L’exemple de code XML suivant montre un fichier de mappage complet qui permet à l’outil SolutionPackager de lire n’importe quelle ressource Web et les deux assemblys générés par défaut à partir d’un projet Developer Toolkit nommé 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>
Solutions gérées et non gérées
Un fichier de solution compressée (.zip) Dynamics 365 Customer Engagement ( on-premises ) peut être exporté dans l’un des deux types suivants, comme indiqué ici.
Solution gérée
Une solution complète prête à être importée dans une organisation. Une fois importés, les composants ne peuvent pas être ajoutés ou supprimés, bien qu’ils puissent éventuellement permettre une personnalisation supplémentaire. Ceci est recommandé lorsque le développement de la solution est terminé.
Solution non gérée
Une solution ouverte sans restriction sur ce qui peut être ajouté, supprimé ou modifié. Ceci est recommandé lors du développement d’une solution.
Le format d’un fichier solution compressé sera différent en fonction de son type, géré ou non géré. Le SolutionPackager peut traiter des fichiers de solution compressés de l’un ou l’autre type. Cependant, l’outil ne peut pas convertir un type en un autre. La seule façon de convertir des fichiers de solution en un autre type, par exemple de non géré à géré, consiste à importer la solution non gérée .zip fichier dans un serveur Dynamics 365, puis à exporter la solution en tant que solution gérée.
Le SolutionPackager peut traiter les fichiers de solution .zip non gérés et gérés en tant qu’ensemble combiné via le paramètre /PackageType:Both. Pour effectuer cette opération, il est nécessaire d’exporter votre solution deux fois comme chaque type, en nommant les fichiers .zip comme suit.
- Fichier .zip non géré : AnyName.zip
- Fichier .zip géré : AnyName_managed.zip
L’outil suppose la présence du fichier zip géré dans le même dossier que le fichier non géré et extrait les deux fichiers dans un seul dossier, en préservant les différences entre les composants gérés et non gérés.
Une fois qu’une solution a été extraite à la fois comme non gérée et gérée, il est possible d’emballer les deux, ou chaque type individuellement, à partir de ce dossier unique, à l’aide du paramètre /PackageType pour spécifier le type à créer. Lorsque vous spécifiez les deux, deux fichiers .zip seront produits en utilisant la convention de nommage ci-dessus. Si le paramètre /PackageType est manquant lors de l’empaquetage à partir d’un double dossier géré et d’un dossier non géré, la valeur par défaut est de produire un seul fichier .zip non géré.
Résolution des problèmes
Si vous utilisez Visual Studio 2012 pour modifier les fichiers de ressources créés par l’empaqueteur de solutions, vous pouvez recevoir un message similaire à celui-ci lors du réempaquetage : “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.” Cela se produit, car Visual Studio remplace les balises de métadonnées du fichier de ressources par des balises de données.
Contournement
Ouvrez le fichier de ressources dans votre éditeur de texte préféré, puis recherchez et mettez à jour les balises suivantes :
<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">Remplacez le nom du nœud de
<data>à<metadata>.Par exemple, cette chaîne :
<data name="Source LCID" xml:space="preserve"> <value>1033</value> </data>Modifications apportées à :
<metadata name="Source LCID" xml:space="preserve"> <value>1033</value> </metadata>Cela permet à l’empaqueteur de solutions de lire et d’importer le fichier de ressources. Ce problème n’a été observé que lors de l’utilisation de l’éditeur de ressources Visual Studio.
Voir aussi
Outils de solution pour le développement d’équipe
Utiliser le contrôle de code source avec les fichiers solution
Présentation des solutions