J'ai un service qui consiste à télécharger un assembly à partir du stockage dans le cloud, en créant une instance à l'aide d'Activator.CreateInstance, puis en invoquant une méthode.Pourquoi l'événement AssemblyResolve essaie-t-il de résoudre un assembly déjà chargé dans AppDomain?
J'ai mis en place une méthode AssemblyResolve pour télécharger les dépendances qui fonctionne bien, mais pour tester/expérimenter, j'essaie maintenant de télécharger manuellement les assemblys. J'ai aussi loin que la recherche qui les dépendances sont nécessaires, de les télécharger et de les charger en utilisant
Assembly.Load(byte[])
Après que je peux voir, ils sont chargés dans le AppDomain via
AppDomain.CurrentDomain.GetAssemblies())
Cependant, quand j'invoque la méthode sur l'assemblage qui fait référence à ceci, il va toujours à l'AssemblyResolver.
Il se peut que je ne comprenne pas comment fonctionnent les assemblages chargés et l'AppDomain, mais il me semble qu'une fois l'assemblage chargé, il devrait être disponible pour cet assemblage et ne devrait pas avoir à le résoudre? Pourquoi ne peut-il pas le "voir"? La version et le nom etc. sont les mêmes.
J'ai lu sur les différents contextes de liaison d'assemblage here et je pense que cela pourrait être le problème? Il suggère que l'utilisation de Assembly.Load (chaîne) va charger dans un contexte différent de Assembly.Load (octet)? Dans ce cas comment est-ce que je fais ceci quand j'ai juste l'assembly dans la mémoire comme byte []?
Merci
Ne parvient-il pas à charger l'assembly même si vous avez déjà utilisé Assembly.Load (..) sans exception? – Redhead
Pouvez-vous afficher une capture d'écran de votre écran 'Debug-> Widnows-> Modules' dans Visual Studio après que l'assembly a été chargé avec le sélecteur sélectionné? –
Veuillez ajouter le code qui montre comment charger le type, obtenir la méthode et l'exécuter. J'ai réfléchi à ce que le problème est ;-) –