2008-12-12 6 views
0

J'ai une application qui utilise de nombreuses DLL managées .NET en tant qu'objets (chaque DLL implémente une interface commune). Chaque DLL possède également un numéro de version dans le nom de fichier. Supposons que je crée l'objet "Shape ~ 01.dll". L'application utilisera cette DLL mais elle ne peut pas être remplacée pendant que l'application est en cours d'exécution. Donc, si je veux "mettre à jour" la forme dll, je dois créer "Shape ~ 02.dll" et l'application doit rechercher dynamiquement et charger la nouvelle DLL chaque fois qu'une forme est créée et/ou l'utilisateur doit redémarrer le application. Cela devient pire, chaque DLL dépend du fichier principal .exe doit donc être reconstruit avec le fichier .exe principal.Alternative aux DLL en tant qu'objets (objets remplaçables dynamiquement)

Existe-t-il une méthode plus simple pour avoir des objets dynamiquement "remplaçables"?

Répondre

0

Eh bien, ce n'est pas la meilleure solution (encore à y penser), mais vous pouvez décharger les fichiers dll qui leur permettront d'être remplacés. Cela pourrait être une solution rapide stopgap jusqu'à ce que vous ayez une meilleure idée.

0

Vous ne mentionnez pas dans quelle langue/plate-forme vous essayez d'accomplir ceci, donc je répondrai pour le .NET Framework. Si vous voulez le faire à la dure, regardez les assemblys Shadow, c'est la méthode utilisée par ASP.NET pour maintenir le site à jour même s'il utilise les fichiers. Pour une méthode beaucoup plus facile, regardez le nouvel espace de noms System.Addin, cela utilise les assemblages Shadow sous le capot et devrait faire ce que vous voulez.

-1

Au lieu d'interroger lors de la création d'un objet, pourquoi ne pas simplement demander une notification au système lorsque le système de fichiers change?

La classe est System.IO.FileSystemWatcher in.NET.

Pour le code natif, il existe plusieurs façons de regarder un dossier, mais IANAND (je ne suis pas un développeur natif;). Bien que vous ayez dit ces choses, vous voudrez probablement repenser la raison pour laquelle vous devez changer vos objets si souvent, car il faudra probablement beaucoup de travail pour le faire fonctionner.

Vous avez utilisé la balise dynamique, alors peut-être que vous devriez essayer une langue dynamique? :)

Questions connexes