Blog d'Emmanuel Istace

References en tant que ressources incorporées

Posted in DotNet, Programmation by Emmanuel Istace on 1 février 2012

Ce petit bout de code peut se montrer utile dans certains cas. Bien que ne respectant pas la philosophie .net, on peut se retrouver dans des cas où l’on doit n’avoir qu’un seul fichier exécutable portable en dehors du dotnet framework par exemple. Cela peut vite être le cas quand on développe des « utilitaires ».
Concernant l’intégration de la DLL il suffit de la rajouter dans un dossier ou un projet dédié en tant que ressources incorporées. Lié par lien la plupart du temps pour continuer à mettre à jours les dépendances lors des builds. Sinon, une hard copy est faite, ne reflétant pas les changements du fichier source.
Enfin pour charger l’assembly, le code ci-dessous fera l’affaire. (Nécessaire pour chaque AppDomaine utilisant les dll incorporées)

            AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
            {
                String resourceName = "MyLoader.DLL." + new AssemblyName(args.Name).Name + ".dll";
                using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
                {
                    Byte[] assemblyData = new Byte[stream.Length];
                    stream.Read(assemblyData, 0, assemblyData.Length);
                    return Assembly.Load(assemblyData);
                }
            };

Tagged with: , , , , ,

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Twitter picture

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Connexion à %s

Suivre

Get every new post delivered to your Inbox.

Joignez-vous à 31 followers