Laden...

Gegen DLLs programmieren aber zur Laufzeit austauschen und löschen

Erstellt von Quaneu vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.688 Views
Quaneu Themenstarter:in
692 Beiträge seit 2008
vor 5 Jahren
Gegen DLLs programmieren aber zur Laufzeit austauschen und löschen

Hallo zusammen,

ich würde gerne wissen ob bzw. wie man folgendes Problem lösen könnte.

Ich habe eine exe (WPF) die eine DLL verwendet, diese kann vor der ersten Benutzung der DLL geupdatet werden, wenn die exe eine neuere Version findet. Die DLL wiederrum benutzt zwei weitere DLLs (eine ist Mixed Mode) die sie "entpackt" und verwendet (es wird dagegen implementiert).
Ich würde jedoch diese zwei DLLs wieder löschen wollen, wenn sie ihre Arbeit getan haben. Und hier finde ich einfach keinen Weg.

Ich habe es schon mit einer eigenen AppDomain probiert, da man Assemblies nicht einzeln entladen kann, jedoch kam es hier immer wieder zu Problemen... z.B. Application.Current ==null.

Gibt es hier auch eine andere Möglichkeit bzw. Lösungsansatz?

Schöne Grüße
Quaneu

16.807 Beiträge seit 2008
vor 5 Jahren

Stichwort: Pluginsystem.

Und ja, nur über eine eigene AppDomain können DLLs entladen werden.
Wenn es hier ein Problem gibt, dann hast Du wahrscheinlich was falsch gemacht.

Warum Du "DLLs löschen willst, wenn sie ihre Arbeit erledigt haben" erschließt sich mir nicht.

Quaneu Themenstarter:in
692 Beiträge seit 2008
vor 5 Jahren

Danke für die Info.

Wenn es hier ein Problem gibt, dann hast Du wahrscheinlich was falsch gemacht.

Wie gesagt, dass Problem sind z.B. alle statischen Klassen, die von WPF initialisiert werden (z.B. Application.Current). Diese sind in der AppDomain alle nicht initialisiert.

Warum Du "DLLs löschen willst, wenn sie ihre Arbeit erledigt haben" erschließt sich mir nicht.

Da ich die DLLs entpacke wollte ich sie auch wieder aufräumen. D.h. der Ordner soll nach dem Durchlauf so sein wie davor.

2.298 Beiträge seit 2010
vor 5 Jahren

Was genau hast du denn vor? Ich verstehe dein Gesamtproblem nicht.

Was ist denn das für ein verquerer Anwendungsaufbau wenn zur Laufzeit irgendwelche DLL's generiert werden und nach Verwendung wieder verschwinden?

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

Quaneu Themenstarter:in
692 Beiträge seit 2008
vor 5 Jahren

Es gibt eine DLL "X" in ihr sind zwei DLLs embedded. Wenn diese gebraucht werden, "entpacke" ich diese DLLs.
Dies wird deshalb gemacht da die "X" DLL beim Programmstart geupdatet werden kann und ich nicht n-DLLs kopieren will, sondern nur eine. Damit stelle ich auch sicher, dass das gesamte Packet zusammen passt.

5.657 Beiträge seit 2006
vor 5 Jahren

Merkwürdiger Ansatz. Dafür gibt es bereits fertige Lösungen, Stichwort Software-Updater.

Ansonsten: [FAQ] Eigene Anwendung pluginfähig machen

Weeks of programming can save you hours of planning

16.807 Beiträge seit 2008
vor 5 Jahren

Würde den kompletten Ansatz verwerfen und etablierte Umsetzungen verfolgen.
Hört sich nach unwartbarer Magic an, die viel Potential für Puzzlearbeit und Fehleranfälligkeit von Haus aus mitliefert -> vermeidbar.