Inhalte aufrufen

Profilbild

Plugin Entwicklung - Plugin lässt sich nicht installieren


  • Bitte melden Sie sich an, um eine Antwort zu verfassen.
3 Antworten zu diesem Thema

#1 qtrado-mt

qtrado-mt

    Newbie

  • Members
  • 5 Beiträge

Geschrieben: 14 October 2021 - 12:29

Hallo,

 

ich versuche gerade mein erstes Plugin zu entwickeln und komme leider nicht weiter.

 

Ich habe zunächst einen eigenen Fork ( https://github.com/q...artStoreNET.git )des SmartstoreNET Repos auf github erstellt und dieses lokal geklont.

Dann alles erledigt um einen lauffähigen Shop zu haben (Läuft lokal mit SQL Server Express 2019)

 

Anschließend habe ich über die VS Vorlage (mit VS Pro 2019) ein neues Smartstore Plugin-Projekt erstellt (QTRADO.WMAddOn).

Den erzeugten Domain Record WMAddOnRecord habe ich nach "Grossist" umbenannt (STRG + R +R) und das Model um weitere Felder erweitert. Anschließend die EF Migrations erstellt und das Projekt Smartstore.Web im Debug-Modus gestartet.

 

Der Shop startet und in der Verwaltung wird mir das neue Plugin auch angezeigt.

 

Es lässt sich jedoch nicht installieren, da die Installation mit einer nicht behandelten Ausnahme abbricht.

 

 

Im Ausgabe-Fenster des Debuggers wird folgende Ausnahme gemeldet.

 

SmartStore.Admin.Controllers.PluginController: ERROR - Der Wert darf nicht NULL sein.
Parametername: key
System.ArgumentNullException: Der Wert darf nicht NULL sein.
Parametername: key
   bei System.Collections.Concurrent.ConcurrentDictionary`2.TryGetValue(TKey key, TValue& value)
   bei SmartStore.Core.Infrastructure.DependencyManagement.ContainerManager.ResolveUnregistered(Type type, ILifetimeScope scope) in C:\Users\thyssen.FJK\Source\repos\SmartStoreNET\src\Libraries\SmartStore.Core\Infrastructure\DependencyManagement\ContainerManager.cs:Zeile 80.
   bei SmartStore.Core.Plugins.PluginDescriptor.Instance[T]() in C:\Users\thyssen.FJK\Source\repos\SmartStoreNET\src\Libraries\SmartStore.Core\Plugins\PluginDescriptor.cs:Zeile 252.
   bei SmartStore.Core.Plugins.PluginDescriptor.Instance() in C:\Users\thyssen.FJK\Source\repos\SmartStoreNET\src\Libraries\SmartStore.Core\Plugins\PluginDescriptor.cs:Zeile 264.
   bei SmartStore.Admin.Controllers.PluginController.ExecuteTasks(IEnumerable`1 pluginsToInstall, IEnumerable`1 pluginsToUninstall) in C:\Users\thyssen.FJK\Source\repos\SmartStoreNET\src\Presentation\SmartStore.Web\Administration\Controllers\PluginController.cs:Zeile 234.

Das sieht für mich erstmal so aus, dass der Service nicht im DI Container registriert?/gefunden wurde.
Leider komm ich an der Stelle nicht weiter und bin daher für jeden Hinweis dankbar.
 

 


  • Lighthouse gefällt das

#2 Marcus Gesing

Marcus Gesing

    SmartStore AG

  • Administrators
  • 3670 Beiträge

Geschrieben: 14 October 2021 - 15:23

Ist die Plugin-Haupklasse, über die die Installation läuft, von BasePlugin bzw. IPlugin abgeleitet und ist diese "public" (exportierbarer Typ)?
Ist in der AssemblyInfo.cs und der Description.txt der korrekte SystemName des Plugins eingetragen?
Ich würde mal diese Zeile debuggen, ob er für das betreffende Plugin den Runtime-Type finden kann.

  • Lighthouse gefällt das

Schöne Grüße aus Düsseldorf,
Marcus Gesing


#3 qtrado-mt

qtrado-mt

    Newbie

  • Members
  • 5 Beiträge

Geschrieben: 14 October 2021 - 16:34

Die Klasse Plugin wird von BasePlugin abgeleitet. https://github.com/q...n/Plugin.cs#L17

 

In der Description.txt steht bei SystemName: QTRADO.WMAddOn https://github.com/q...cription.txt#L2

 

AssemblyInfo.cs AssemblyTitle QTRADO.WMAddOn https://github.com/q...emblyInfo.cs#L2

 

Die DLL hat den Namen QTRADO.WMAddOn.dll

 

In der PluginManager.cs#L346 taucht jedoch kein Typ aus meinem Plugin auf.
Habe den Breakpoint per Bedingung und mehrfach manuell geprüft.


  • Lighthouse gefällt das

#4 qtrado-mt

qtrado-mt

    Newbie

  • Members
  • 5 Beiträge

Geschrieben: 15 October 2021 - 08:49

Ich habe die Ursache nun gefunden.

Der Controller war im falschen Namespace. ( https://github.com/q...ntroller.cs#L15 )

 

Richtig ist QTRADO.WMAddOn.Controllers