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.
Catégorie : Maintenabilité, Conception
Potentiel d’impact : Faible
Symptômes
Lors de l’importation d’une solution qui contient un plug-in, une erreur semblable à celle-ci peut s’afficher :
ImportSolutionException: Plugin Assemblies import: FAILURE. Error: Plugin: Custom.Xrm.Plugins,
Version=1.2.0.0, Culture=neutral, PublicKeyToken=59f189e458044167 of PluginTypeName:
Microsoft.Crm.Entities.PluginType and PluginTypeNode: caused an exception.: Plugin Types
import: FAILURE. Error: Plugin: Custom.Xrm.Plugins, Version=1.2.0.0, Culture=neutral,
PublicKeyToken=59f189e458044167 of PluginTypeName: Microsoft.Crm.Entities.PluginType caused an
exception.: PluginType [Custom.Xrm.Plugins.CreateContact] not found in PluginAssembly
Cette erreur se produit lorsqu’un nouveau type de plug-in est ajouté à un assembly existant dans la solution et que cet assembly est également inclus dans une autre solution.
Instructions
La définition d’un assembly de plug-in doit être conservée au sein d’une solution unique. Vous pouvez avoir une solution distincte qui contient uniquement des définitions de plug-in pour aider à gérer les plug-ins.
Schémas problématiques
Voici deux exemples de la condition dans laquelle cette erreur peut se produire. Dans les deux exemples, il existe un assembly de plug-in représentant le fichier BasicPlugin.dll. Les deux exemples échouent avec une erreur : PluginType [BasicPlugin.CreateAccount] not found in PluginAssembly.
Exemple 1 : Mettre à niveau une solution existante
Il existe deux solutions qui incluent BasicPlugin.dll.
Dans l’environnement cible (managé), l’assembly BasicPlugin.dll a la couche de solution suivante.
| Couche | Solution | Solution Version | Types de BasicPlugin |
|---|---|---|---|
| 1 | AnotherSolution | v1.0.0.0 | UpdateLead |
| 2 | PluginSolution | v1.0.0.0 | UpdateLead |
Ensuite, vous mettez à jour pluginSolution, en modifiant la version en v2.0.0.0.0 et incluez un nouveau type de plug-in : CreateAccount.
Cela échouera, car l’assembly de plug-in de composant de solution de niveau supérieur (couche 1) ne contient pas le nouveau CreateAccount type de plug-in.
Exemple 2 : Installer une nouvelle solution
Dans l’environnement cible (managé), l’assembly BasicPlugin.dll a la couche de solution suivante.
| Couche | Solution | Version de la Solution | Types de Plugin de Base |
|---|---|---|---|
| 1 | PluginSolution | v1.0.0.0 | UpdateLeadCreateAccount |
Lorsque vous essayez d’installer une nouvelle solution, AnotherSolution v1.0.0.0, qui a un assembly BasicPlugin qui contient uniquement le type de plug-in : UpdateLead
L’erreur se produit, car le BasicPlugin.dll dans cette nouvelle solution ne contient pas le CreateAccount PluginType.
Solutions
La bonne solution consiste à éviter la situation dans laquelle le même module d’extension est inclus dans plusieurs solutions.
Dans les deux exemples ci-dessus, lorsque l’assembly de plug-in fait partie de deux solutions différentes, vous devez conserver des types de plug-in cohérents dans les deux solutions. Si vous continuez à gérer les deux assemblys plug-in dans les deux solutions, vous devez mettre à jour les deux solutions chaque fois que vous ajoutez un nouveau type de plug-in à l’assembly.
Informations supplémentaires
Les solutions peuvent contenir des plug-ins. Les plug-ins se composent d’enregistrements PluginAssembly et PluginType associés les uns aux autres.
PluginAssembly contient le contenu binaire de l’assembly. PluginType contient une référence à la classe dans l’assembly qui implémente l’interface IPlugin .
En tant que composants de solution, les plug-ins participent au système de couche de solution. Si le même assembly est inclus dans deux solutions installées les unes sur les autres, les validations de type échouent s’il existe des types incompatibles dans les assemblys.