7
votes

Comment déterminer où assemblage.load () recherche des assemblages?

J'ai un complément VS qui utilise un formidateur binaire pour désérialiser un objet. Pour résoudre le type de cet objet, il appelle Assembly.load (ObjectTypefullName), mais il déclenche une exception car Assembly.Load ne peut pas trouver l'assemblage dans l'un des endroits où il recherche. L'assemblage donné est un frère à l'assemblage complémentaire, mais il semble que l'assemblage.Load () ne puisse pas le trouver là-bas.

Une solution possible serait de déterminer où l'assemblage.Load devrait rechercher des assemblages.

Que dois-je faire?

PS: J'essaie de ne pas mettre cette assemblée sur GAC car je devrais le mettre à jour à chaque fois que je recompile l'Assemblée.


0 commentaires

3 Réponses :




4
votes

Voici une extraction de code montrant comment AssemblyResolve pourrait être utilisée pour résoudre votre assemblage (selon la réponse de Reed Copey): xxx

également, notez que la page MSDN pour AssemblyResolve stipule que:

commençant par le .NET Framework version 4, la Résouseventargs.Requestingstingembly propriété renvoie l'assemblage qui demandé la charge de montage qui pourrait ne pas être résolu ...

Ceci peut être utilisé si vous connaissez le lieu de votre assembly par rapport à celui de l'assemblage demandeur.


1 commentaires

Hershi, merci +1. En fait, votre solution s'est avérée être celle que j'ai utilisée et j'ai fini par utiliser votre extrait. J'ai marqué la réponse de Reed tellement acceptée que c'est plus complète. Merci quand même.