2010-02-17 8 views
9

J'ai "mycomp.myassembly.dll" dans GAC mais Load et LoadFrom lancent l'exception de fichier introuvable et LoadWithPartialName renvoie null. Je fais ce qui suit:C#: Comment charger l'assembly à partir du GAC?

AssemblyName name = new AssemblyName(); 
    name.Name = "mycomp.myassembly.dll"; 

    Assembly assembly = Assembly.Load(name); 

échoue avec FileNotFound pour le fichier mycomp.myassembly.dll et

Assembly assembly = Assembly.Load("mycomp.myassembly.dll"); 

échoue avec exactement le même message.

J'ai vérifié deux fois que l'assemblage est en GAC (et même fait gacutil/if for it again) et cela fonctionne dans tous les autres cas, je ne peux simplement pas le charger moi-même.

Qu'est-ce que je fais mal ici? Est-ce que quelque chose me manque?

+1

Avez-vous essayé de fournir le nom de l'assembly sans l'extension ".dll"? Ensemble d'assemblage = Assembly.Load ("mycomp.myassembly"); –

+0

Unfortunatelly n'a pas aidé non plus – Artem

Répondre

19

Avez-vous essayé d'utiliser le nom d'assembly complet? (Par exemple "ycomp.myassembly.dll, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3")

+0

Cela a aidé, merci! :) – Artem

+0

Les guillemets doubles sont des gars importants. –

1

simplement essayer loading with the full name

// You must supply a valid fully qualified assembly name.    
     Assembly SampleAssembly = Assembly.Load 
      ("SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3"); 

Je peux habituellement charger sans la version, la culture et la clé publique.

+0

Je pense que la clé publique serait nécessaire, sans la clé publique, il est traité comme un assemblage entièrement différent. Tous les assemblages dans le GAC auront une clé publique. – erikkallen

+0

vous avez raison. j'étais péter le cerveau et penser à charger des assemblées locales –

Questions connexes