2010-02-17 16 views
9

Tengo "mycomp.myassembly.dll" en GAC pero Load y LoadFrom arroja la excepción de archivo no encontrado y LoadWithPartialName devuelve nulo. Estoy haciendo lo siguiente:C#: ¿Cómo cargar el ensamblaje desde GAC?

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

    Assembly assembly = Assembly.Load(name); 

falla con FileNotFound de archivo mycomp.myassembly.dll y

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

falla con exactamente el mismo mensaje.

Comprobé dos veces que el ensamblaje está en GAC (e incluso lo hice en gacutil/si es de nuevo) y funciona en todos los demás casos, simplemente no puedo cargarlo yo mismo.

¿Qué estoy haciendo mal aquí? ¿Extraño algo?

+1

¿Ha intentado proporcionar el nombre del ensamblado sin una extensión ".dll"? Ensamblaje de ensamblaje = Assembly.Load ("mycomp.myassembly"); –

+0

Desafortunadamente tampoco ayudó – Artem

Respuesta

19

¿Ha intentado utilizar el nombre completo del ensamblado? (Por ejemplo "ycomp.myassembly.dll, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3")

+0

Esto ayudó, ¡gracias! :) – Artem

+0

Las comillas dobles son tipos importantes. –

1

tratan simplemente 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"); 

lo general se puede cargar sin la versión, la cultura y la clave pública.

+0

Creo que se necesitaría la clave pública, sin la clave pública se trata como un ensamblaje completamente diferente. Todas las asambleas en el GAC tendrán una clave pública. – erikkallen

+0

tienes razón. me estaba tirando pedos y pensando en cargar asambleas locales –

Cuestiones relacionadas