Question

J'ai un assembly déjà créé, disons Static.dll, et un assembly dynamique que je crée au moment de l'exécution, disons Dynamic. Dynamic crée du code IL pour créer un nouveau type à partir de Static.dll.Quand Dynamic est créé (il est enregistré avec succès), l'exécutable, une fois exécuté, génère des erreurs car il est incapable de charger l'assembly Static.dll taper.Je crois que cela se produit depuis le Dynamic la sortie exe ne trouve pas cette DLL (ou du moins c'est mon hypothèse).

Comment peut-on accomplir l'ajout de ceci Static.dll référence afin que lorsque quelqu'un exécute la sortie exécutable résultante de Dynamic qu'il peut trouver les types référencés ?

Je sais à propos Assembly.Load(), mais cela seul ne change rien.Ou du moins, je ne suis pas sûr de ce que cela me donne puisque je n'ai pas besoin d'utiliser le type au moment de l'exécution, mais plutôt lors de l'exécution du Dynamic exécutable.

Enfin, je contrôle le Static.dll, donc si je peux faire quelque chose avec le projet pour le corriger, cela pourrait être fait, cependant, il doit rester séparé (je ne veux pas émettre cette bibliothèque à chaque fois que je crée un assemblage dynamique).Au fond, je pense Je veux que mon assemblage dynamique ait un .assembly extern mscorlib dans sa sauvegarde manifeste Static est la place du mscorlib.

Merci

Était-ce utile?

La solution

Comment peut-on accomplir l'ajout de ceci Static.dll référence afin que lorsque quelqu'un exécute la sortie exécutable résultante de Dynamic qu'il peut trouver les types référencés ?

La référence sera ajoutée automatiquement.Notez que les règles normales de vérification des assemblages s'appliquent lors de l'exécution de votre assemblage dynamique, donc afin de trouver l'assemblage.Vous devez (l'un des) :

  • expédier static.dll aux côtés de Dynamic.dll
  • mettez static.dll dans le GAC (mais s'il vous plaît :ne fais pas ça !)
  • exécutez Dynamic.dll dans un AppDomain personnalisé avec une configuration de chemin de sondage personnalisée qui permet de trouver static.dll
  • gérer AppDomain.AssemblyResolve pour fournir static.dll
  • utilisez quelque chose comme ILMerge pour fusionner static.dll et Dynamic.dll
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top