Freigeben über


Plug-Ins in einer einzigen Lösung verwalten

Kategorie: Wartbarkeit, Design

Wirkungspotential: Niedrig

Symptome

Beim Importieren einer Lösung, die ein Plug-In enthält, wird möglicherweise ein Fehler wie dieser 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 Projektmappe ein neuer Plug-In-Typ hinzugefügt wird und diese Assembly auch in einer anderen Projektmappe enthalten ist.

Anweisungen

Die Definition einer Plug-In-Assembly sollte in einer einzigen Lösung verwaltet werden. Möglicherweise möchten Sie eine separate Lösung, die nur Plug-In-Definitionen enthält, um die Verwaltung der Plug-In zu erleichtern.

Problematische Muster

Unten 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 einem Fehler fehl: PluginType [BasicPlugin.CreateAccount] not found in PluginAssembly.

Beispiel 1: Upgrade einer vorhandenen Lösung

Es gibt zwei Lösungen, die BasicPlugin.dll enthalten.

In der (verwalteten) Zielumgebung verfügt die BasicPlugin.dll-Assembly über die folgenden Lösungsebenen.

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

Dann aktualisieren Sie PluginSolution, wodurch sich die Version auf v2.0.0.0 ändert, und fügen einen neuen Plugin-Typ hinzu: CreateAccount.

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

Beispiel 2: Installieren Sie eine neue Lösung

In der (verwalteten) Zielumgebung verfügt die BasicPlugin.dll-Assembly über die folgenden Lösungsebenen.

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, weil die BasicPlugin.dll in dieser neuen Lösung den Plugin-Typ CreateAccount nicht enthält.

Lösungen

Die richtige Lösung besteht darin, Situationen zu vermeiden, in denen 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 beibehalten, 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 der Assembly, welche die IPlugin-Schnittstelle bereitstellt.

Als Lösungskomponenten sind Plug-Ins am Lösungsebenensystem beteiligt. Wenn dieselbe Assembly in zwei übereinander installierten Lösungen enthalten ist, schlagen die Typprüfungen fehl, wenn die Assemblys nicht übereinstimmende Typen enthalten.

Siehe auch

Lösungsebenen