2010-11-30 18 views
1

Dans un projet, nous chargeons dynamiquement un fichier .dll en fonction des paramètres d'un objet. Avant ILMerge, cela a bien fonctionné. Nous avons maintenant utilisé ILMerge et créé un fichier .dll, mais le chargement échoue. Comment chargez-vous dynamiquement un .dll après ILMerged? Nous utilisons VS2008 et C#.Charge dynamique d'une DLL après ILMerge

DLLS: common.dll, CommonMedical.dll

NOUVEAU DLL:

DMCommon.dll

code actuel qui ne parvient pas à charger le fichier .dll:
asm = Assembly.LoadFrom ("CommonMedical.dll")

Qu'est-ce que je fais mal? J'ai même essayé .Load, et je ne vois aucun problème avec l'espace de nom parce qu'il fonctionne sans ILMerging. Merci à l'avance,

Craig

+0

Duplicata de http://stackoverflow.com/questions/3394325? – marr75

+0

Quels sont les détails complets de l'erreur que vous obtenez? –

+0

duplication possible de [Impossible d'instancier la classe via .NET Reflection; fusionné avec ILMerge] (http://stackoverflow.com/questions/3394325/unable-to-instantiate-the-class-through-net-reflection-merged-with-ilmerge) –

Répondre

1

La réponse évidente, changer votre code: asm = Assembly.LoadFrom ("DMCommon.dll");

Vous avez créé un nouveau fichier d'assemblage fusionné et vous utilisez le LoadFrom qui se charge en utilisant un nom de fichier.

+0

doit être une certaine confusion de mon côté ... vous dites d'utiliser .LoadFrom comme votre réponse, mais dites ensuite que mon erreur utilise LoadFrom qui charge en utilisant un nom de fichier. S'il vous plaît clarifier - merci! – cbuck12000

+0

Preet Sangha a ajouté la deuxième phrase à mon message original. L'API LoadFrom prend le nom de l'assembly sur le lecteur, pas l'espace de noms, ce qui explique pourquoi vous devez utiliser le nouveau nom d'assembly fusionné. –

+0

wow, c'était confus sur le poste. J'ai essayé ce que vous avez suggéré et j'ai toujours une erreur à ne pas trouver l'assemblage. – cbuck12000