PluginLib [2.1]

    • Release

    Es gibt 125 Antworten in diesem Thema. Der letzte Beitrag () ist von ClonkAndre.

      Ja ok, das kan natürlich auch sein.
      Da stehen tuts jedenfalls im Reflector.

      Inwiefern sollen goto´s eigentlich schlecht programmiert sein? Ich mein klar, man sollte in der Lage sein eine Schleife auch so
      zu verlassen, aber laut MSDN ist es genauso gedacht, um diese z.B. zu verlassen (tief geschachtelte).
      Wieso sollte man es also nicht nutzen?

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Razer“ ()

      Hi.
      Also erstens: Goto benutze ich nicht ;)

      Zweitens: Das hast du falsch verstanden!
      Das ist ein "Schutz" (übertrieben) der verhindern soll, dass ein Plugin umbenannt wird.
      Du kannst statische Namespaces angeben, $plugin ist keine Pflicht.

      Ich wüsste aber auch nicht wie man das anders regeln soll.
      Eine automatische Namespace suche ist auch nicht das Wahre, da vielleicht in einem Plugin mehrere existieren.
      Und das man als Plugin-Autor regeln befolgen muss ist nichts neues. Du (also Plugin-System-"Designer) musst natürlich auf Vorgaben machen, z.B. das alle Plugins den Namespace "XPlugin" haben.

      Gruß
      To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

      At some point in time, you recognize that knowing more does not necessarily make you more happy.
      Ich hät einfach jedes geladen, die Types durchsucht und geprüft welches den Typ "PluginLib.Plugin" erbt.
      Schon hastes. Was sonst noch vorhanden ist, kann das Plugin verwenden, ist aber für den PluginManager nicht wichtig.

      Dauert zwar länger, ist aber fehler-freier und besser. Und so viel Zeit machts nicht aus.
      Wer Plugins verwenden will, muss damit rechnen, dass ein paar Sekunden mehr beim Start draufgehen.

      Aber so find ichs auch nicht schön. Der Dateinamen sollte zwar zeigen, um was es sich handelt, sollte aber
      nicht die Verwendung des Plugins verhindern ;)


      @Tsuyo: Ich glaub, da gibts eigentlich keinen. Die PluginLib ist eigentlich das selbe System, nur vereinfacht es halt das,
      indem man nicht alles selber machen muss. Der einzige Unterschied ist, dass es flexibel ist.
      Man muss halt selber die Funktionen usw. hinzufügen.

      Aber da die nächste Frage: Wie sollen Plugins von Dritten geladen werden? Man muss das im Code doch angeben, welche Methoden
      usw. die haben oder? Oder kann man auch Ohne "AddMethod" Invoken?

      MfG
      R
      Nicht mit dieser Lib, nein.
      Wenn Interesse besteht, werde ich den Quelltext veröffentlichen, da ich keine Motivation mehr habe, diese weiterzuentwickeln.

      Gruß
      To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

      At some point in time, you recognize that knowing more does not necessarily make you more happy.
      Hi Leute, habe die lib bei mir eingebunden und funtkioniert einwandfrei. Aber nur solange bis ich den Dateinamen der DLL ändere. Mit dem Namen "TestPlugin.dll" funktiniert es. Ein buchstabe anders und schon bekomme ich folgendes:

      Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Eine Ausnahme vom Typ "PluginLib.NeededVariableNotFoundException" wurde ausgelöst..

      was ist da los?
      Hallo,

      gibt es eine Möglichkeit geladene Plugins zu entladen? Hintergrund ist der das ich eine Updateroutine geschrieben habe die prüft ob Updates des Plugins auf einem Server liegen.

      Ich lade die Plugins direkt, also ohne Stream um der Updateroutine den Zugriff auf die DLL zu ermöglichen. Ich hab allerdings das Problem dass die neue DLL nicht geladen wird.
      Bzw. wenn ich die neue DLL mit manager.loadPlugin laden lasse bekomme ich eine Fehlermeldung das ein Plugin mit diesem Key schon geladen wurde. Ist ja auch klar da die alte DLL noch drin ist.

      Wünschenswert wäre eine manager.unloadPlugin funktion. Könntet ihr sowas noch mit reinbauen? Oder mir den Quelltext zur Verfügung stellen, dann versuche ich selbst mein Glück.

      Vielen Dank

      Phil
      Habe das mal gedownloadet und so verwendet wie im Beispielprjekt gezeigt.
      so bei dieser Zeiler:

      VB.NET-Quellcode

      1. Manager.LoadPlugins(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase).Replace("file:\", Nothing) + "\Plugins", IO.SearchOption.TopDirectoryOnly)


      kommt beim Debuggen ein Fehler:
      dead link/404 an dieser Stelle entfernt ~VaporiZed

      was muss ich machen das das funktioniert?
      bitte um Hilfe und Danke im Voraus.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

      Plugin:

      VB.NET-Quellcode

      1. Public Class Pluginload
      2. Public PluginName As String = "TestPlugin für PluginLib :)"
      3. End Class


      Plugin einbindung

      VB.NET-Quellcode

      1. Imports PluginLib
      2. Public Class Form1
      3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      4. Dim Manager As PluginLib.PluginLib = New PluginLib.PluginLib("$plugin", "plugintest")
      5. ' Jedes Plugin muss eine öffentliche Variable besitzen,
      6. ' die den Namen des Plugins angibt
      7. Manager.AddVariable("PluginName")
      8. ' Manager.LoadPlugins(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase).Replace("file:\", Nothing) + "\Plugins", IO.SearchOption.TopDirectoryOnly)
      9. Manager.LoadPlugins(My.Application.Info.DirectoryPath() & "\Plugins", IO.SearchOption.TopDirectoryOnly)
      10. For Each Plugin As KeyValuePair(Of String, PluginLib.Plugin) In Manager.GetPlugins()
      11. Label1.Text = "Pluginname: " + Plugin.Value.GetVariable("PluginName").GetValue().ToString()
      12. Next
      13. End Sub
      14. End Class



      geht immernochnicht?

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „filmee24“ ()