myCSharp.de - DIE C# und .NET Community (https://www.mycsharp.de/wbb2/index.php)
- Entwicklung (https://www.mycsharp.de/wbb2/board.php?boardid=3)
-- Rund um die Programmierung (https://www.mycsharp.de/wbb2/board.php?boardid=59)
--- Gegen DLLs programmieren aber zur Laufzeit austauschen und löschen (https://www.mycsharp.de/wbb2/thread.php?threadid=121725)


Geschrieben von Quaneu am 28.03.2019 um 09:41:
  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


Geschrieben von Abt am 28.03.2019 um 10:17:
 
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.


Geschrieben von Quaneu am 28.03.2019 um 16:21:
 
Danke für die Info.

Zitat:
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.

Zitat:
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.


Geschrieben von inflames2k am 28.03.2019 um 16:45:
 
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?


Geschrieben von Quaneu am 28.03.2019 um 17:04:
 
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.


Geschrieben von MrSparkle am 28.03.2019 um 18:28:
 
Merkwürdiger Ansatz. Dafür gibt es bereits fertige Lösungen, Stichwort Software-Updater.

Ansonsten:  [FAQ] Eigene Anwendung pluginfähig machen


Geschrieben von Abt am 28.03.2019 um 20:01:
 
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.


© Copyright 2003-2019 myCSharp.de-Team | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 17.06.2019 08:38