Freigeben über


Verwalten von Plug-Ins in einer einzigen Lösung

Kategorie: Wartung, Entwurf

Wirkungspotential: Niedrig

Symptome

Beim Importieren einer Lösung, die ein Plug-In enthält, wird möglicherweise ein Fehler wie folgt angezeigt:

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

Dieser Fehler tritt auf, wenn einer vorhandenen Assembly in der Lösung ein neuer Plug-In-Typ hinzugefügt wird und diese Assembly auch in einer anderen Lösung enthalten ist.

Leitfaden

Die Definition einer Plug-in-Baugruppe sollte in einer einzigen Lösung beibehalten werden. Möglicherweise möchten Sie über eine separate Lösung verfügen, die nur Plug-In-Definitionen enthält, um die Plug-Ins zu verwalten.

Problematische Muster

Nachfolgend finden Sie zwei Beispiele für die Bedingung, in der dieser Fehler auftreten kann. In beiden Beispielen gibt es eine Plug-In-Assembly, die die BasicPlugin.dll Datei darstellt. Beide Beispiele schlagen mit Fehler fehl: PluginType [BasicPlugin.CreateAccount] not found in PluginAssembly.

Beispiel 1: Upgrade einer vorhandenen Lösung

Es gibt zwei Lösungen, die BasicPlugin.dllenthalten.

In der Zielumgebung (verwaltet) weist die BasicPlugin.dll assembly die folgende Lösungsschichtung auf.

Ebene Lösung Lösungsversion BasicPlugin-Typen
1 AnotherSolution v1.0.0.0 UpdateLead
2 PluginSolution v1.0.0.0 UpdateLead

Anschließend aktualisieren Sie die PluginSolution, ändern die Version in v2.0.0.0.0 und fügen einen neuen Plug-In-Typ ein: CreateAccount.

Dies schlägt fehl, da die Plug-In-Assembly der Lösungskomponente der obersten Ebene (Ebene 1) nicht den neuen CreateAccount Plug-In-Typ enthält.

Beispiel 2: Installieren einer neuen Lösung

In der Zielumgebung (verwaltet) weist die BasicPlugin.dll assembly die folgende Lösungsschichtung auf.

Ebene Lösung Lösungsversion BasicPlugin-Typen
1 PluginSolution v1.0.0.0 UpdateLead
CreateAccount

Wenn Sie versuchen, eine neue Lösung, AnotherSolution v1.0.0.0, zu installieren, die eine BasicPlugin-Assembly mit nur dem Plug-In-Typ UpdateLead enthält.

Der Fehler tritt auf, da die BasicPlugin.dll in dieser neuen Lösung nicht den CreateAccount PluginType enthält.

Lösungen

Die richtige Lösung besteht darin, die Situation zu vermeiden, in der dieselbe Plug-In-Assembly in mehreren Lösungen enthalten ist.

Wenn die Plug-In-Assembly in beiden obigen Beispielen Teil von zwei verschiedenen Lösungen ist, müssen Sie in beiden Lösungen einheitliche Plug-In-Typen beibehalten. Wenn Sie weiterhin beide Plug-In-Assemblys in beiden Lösungen verwalten, müssen Sie beide Lösungen jedes Mal aktualisieren, wenn Sie der Assembly einen neuen Plug-In-Typ hinzufügen.

Weitere Informationen

Lösungen können Plug-Ins enthalten. Plug-Ins bestehen aus PluginAssembly- und PluginType-Datensätzen , die miteinander verknüpft sind.

PluginAssembly enthält den binären Inhalt der Assembly. PluginType enthält einen Verweis auf die Klasse in der Assembly, die die IPlugin Schnittstelle implementiert.

Als Lösungskomponenten nehmen Plug-Ins am Lösungsschichtungssystem teil. Wenn die gleiche Assembly in zwei lösungen enthalten ist, die übereinander installiert sind, schlägt die Typüberprüfung fehl, wenn in den Assemblys nicht übereinstimmende Typen vorhanden sind.

Siehe auch

Lösungsebenen