Laden...

ASP.NET Core Plugin-System mit RCL Fehler beim Benutzen von Models in der View

Erstellt von GrilleGsutav vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.367 Views
G
GrilleGsutav Themenstarter:in
27 Beiträge seit 2017
vor 5 Jahren
ASP.NET Core Plugin-System mit RCL Fehler beim Benutzen von Models in der View

Moin,

Habe volgendes Problem.
Und zwar hab ich eine Razor Class Library erstellt im MVC design. Siehe Rcl.jpg im Anhang
Nun lade ich die compilierten .dlls über applicationPats in meine Basis anwendung.


    private void ConfigureApplicationParts(IList<ApplicationPart> apm)
    {
      string pluginsPath = String.Format(@"{0}\..\{1}\", HostingEnvironment.ContentRootPath, PluginsDirectoryName);
      if (Directory.Exists(pluginsPath))
      {
        var assemblyFiles = Directory.GetFiles(pluginsPath, "*.dll", SearchOption.AllDirectories);

        foreach (var pluginDirectory in assemblyFiles)
        {
          if (File.Exists(pluginDirectory) && !pluginDirectory.Contains("obj") && pluginDirectory.Contains("HostingPanel") && !pluginDirectory.Contains("BasePlugin") && !pluginDirectory.Contains("refs"))
          {
            if (pluginDirectory.EndsWith(".Views.dll"))
              apm.Add(new CompiledRazorAssemblyPart(Assembly.LoadFile(pluginDirectory)));
            else
              apm.Add(new AssemblyPart(Assembly.LoadFile(pluginDirectory)));
          }
        }
      }
    }

Wenn ich nun ein Model in der View benutzen möchte, kriege ich einen exception Beim Laden der .Views.dll . Diese befindet sich in den "definedTypes"
Fehlermeldung:> Fehlermeldung:

'((System.Reflection.RuntimeAssembly)((Microsoft.AspNetCore.Mvc.ApplicationParts.CompiledRazorAssemblyPart)(new System.Collections.Generic.ICollectionDebugView<Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPart>(apm).Items[13])).Assembly).DefinedTypes' threw an exception of type 'System.Reflection.ReflectionTypeLoadException'

Ich denke mal der Fehler ist wahrscheinlich das die Views.dll keinen kentnisse von den Model besitzt.
Die Frage ist wie ist den der prefferierte weg in Rcl mit models zu arbeiten ?
Wichtig ist die mvc strucktur. Brauche volle EntityFramework unterstützung.
Diese funktioniert auch schon.
Nur halt das model in der View nicht.

Danke schon mal für eure hilfe.

Gruß

Grille

G
GrilleGsutav Themenstarter:in
27 Beiträge seit 2017
vor 5 Jahren
Fehlermedung

Bild von der Fehlermeldung

P
1.090 Beiträge seit 2011
vor 5 Jahren

Schau mal hier: stackoverflow:Get Types in assembly (error: System.Reflection.ReflectionTypeLoadException)

(Aus dem Link) Lass dir est mal genauer ausgeben was das fehl schlägt.

try {
    // your code
} catch (ReflectionTypeLoadException ex) {
    // now look at ex.LoaderExceptions - this is an Exception[], so:
    foreach(Exception inner in ex.LoaderExceptions) {
        // write details of "inner", in particular inner.Message
    }
}

Und schau mal ob die EF Version in der WebConfig Stimmt.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

G
GrilleGsutav Themenstarter:in
27 Beiträge seit 2017
vor 5 Jahren

Dake für deine schnelle Antwort

Das müsste die ausgabe sein, kann da jetzt aber weiter nichts mit anfangen.
Mal sehen was in der dll drin ist.
Ich glaube er findet das model nicht den das ist ja in der HostingPanel.Wiki.dll und nicht in der HostingPanel.Wiki.Views.dll

Ausgabe:

Fehlermeldung:
Ausnahme ausgelöst: "System.Reflection.ReflectionTypeLoadException" in System.Private.CoreLib.dll
Eine Ausnahme vom Typ "System.Reflection.ReflectionTypeLoadException" ist in System.Private.CoreLib.dll aufgetreten, doch wurde diese im Benutzercode nicht verarbeitet.
Unable to load one or more of the requested types.

Hast du vlt. eine Ahnung wie das mit den "index1.cshtml.cs" funtioniert ?
Da scheint es ja so etwas wie ein viewModel zu geben.
Aber wie ich das bebutze und dann noch in die ApplicationDbContext einbinde weiß ich noch nicht.

Gruß

Grille

Hinweis von Coffeebean vor 5 Jahren

Bitte fass deine Fehlermeldungen auch in die Error-Tags, nicht in die C#-Tags. [Hinweis] Wie poste ich richtig?

P
1.090 Beiträge seit 2011
vor 5 Jahren

Er findet da das HostingPanel.Wiki Assembly nicht (lauf Fehlermeldung), mal geschaut ob die Datei da vorhanden ist wo sie sein sollte und du auch den Pfad verwendest?

Hast du vlt. eine Ahnung wie das mit den "index1.cshtml.cs" funtioniert ?
Da scheint es ja so etwas wie ein viewModel zu geben.
Aber wie ich das bebutze und dann noch in die ApplicationDbContext einbinde weiß ich noch nicht.

Da weiß ich jetzt nicht was du damit. Aber ich denke, das hat jetzt nichts mit deinem Problem zu tun oder? Wenn es nichts mit deinem Problem zu tun hat, mache bitte einen eigenen Thread dafür auf. Das gestaltet es übersichtlicher.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

G
GrilleGsutav Themenstarter:in
27 Beiträge seit 2017
vor 5 Jahren
File Not Found

Moin,

Die Assembly sprich die HostingPanel.Wiki.dll wird geladen ich benutze sogar eine classe dort drin.

Die Frage ist wenn ih die View aufmache wo sucht der nach der Assembly.
Wenn der in den References sucht ist klar das der die nicht findet. Ist ja auch nicht statisch referenziert.

Weiß jemand wo der die Assembly erwartet ?

Gruß

Grille