2010-02-17 16 views
9

Mam "mycomp.myassembly.dll" w GAC, ale Load i LoadFrom wyrzuca plik nie znaleziono wyjątek i LoadWithPartialName zwraca null. Robię, co następuje:C#: Jak załadować zespół z GAC?

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

    Assembly assembly = Assembly.Load(name); 

nie z FileNotFound dla pliku mycomp.myassembly.dll i

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

nie z dokładnie tej samej wiadomości.

Sprawdziłem dwa razy, czy montaż jest w GAC (a nawet zrobiłem gacutil/jeśli jeszcze raz) i działa we wszystkich innych przypadkach, po prostu nie mogę załadować go samodzielnie.

Co ja tu robię źle? Czy coś mi brakuje?

+1

Czy próbowałeś podać nazwę zespołu bez rozszerzenia ".dll"? Montaż zespołu = Assembly.Load ("mycomp.myassembly"); –

+0

Niestety nie pomogło ani – Artem

Odpowiedz

19

Czy próbowałeś użyć w pełni kwalifikowanej nazwy zespołu? (Np "ycomp.myassembly.dll, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3")

+0

To pomogło, dziękuję! :) – Artem

+0

Podwójne cytaty są ważnymi facetami. –

1

spróbuj po prostu 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"); 

Zwykle mogę załadować bez wersji, kultury i klucza publicznego.

+0

Myślę, że klucz publiczny byłby potrzebny, bez klucza publicznego jest traktowany jako zupełnie inny zestaw. Wszystkie złożenia w GAC będą miały klucz publiczny. – erikkallen

+0

masz rację. bałem się mózgu i myślałem o ładowaniu lokalnych zgromadzeń –

Powiązane problemy