2010-04-27 19 views
8

¿Alguna idea sobre cómo forzar el uso de una DLL del GAC?Incluir ensamblados GAC en el contenedor

Aquí está mi problema, constantemente uso un DLL de terceros que se registra en el GAC, y cuando lo uso en mi proyecto, lo lee desde el gac, y cuando lo despliego, siempre me olvido de agregue las DLL ya que no se encuentra en la carpeta Bin/Referenced.

De todos modos, ¿obligar a Visual Studio a agregar la DLL en lugar de GAC?

Respuesta

7

Haga clic con el botón derecho en la referencia del conjunto, seleccione propiedades y cambie "Copiar local" a verdadero. Eso hará que se copie el conjunto en el directorio de implementación

+9

Advertencia: ¡Esto no es transitivo! Entonces, si 'MyExe' hace referencia a' MyLib' como 'DllInGac',' MyLib' se copiará localmente, pero * its * dependencias no se copiarán a 'MyExe' si ya están en el GAC. –

5

Seleccione el dll en sus referencias y configure CopyLocal = true en la ventana de propiedades.

2

Seleccione la referencia y establece la propiedad Copy Local en True

12

copia local sólo funciona si la asamblea GAC'd si un nivel de referencia de profundidad. Por ejemplo, si tiene un proyecto que hace referencia al ensamblado GAC, y ese proyecto si es referenciado por su proyecto web, mientras que sí, el ensamblado GAC se copiará a la carpeta bin del primer proyecto, pero no lo hará ser copiado a la carpeta bin de su proyecto web.

La solución, entonces, es establecer directamente una referencia en el proyecto web al ensamblado GAC, y especificar Copiar local. Aunque el proyecto web no usa directamente la referencia en este caso, lo copiará en la carpeta bin de la aplicación web.

+2

La solución está llena de peligros, especialmente cuando se involucran las herramientas de limpieza de código. Si algo como Resharper te dice que una referencia "no es necesaria" (piensa en un gran equipo de proyecto) y estas referencias se limpian, vuelves al punto uno. – Shiv

Cuestiones relacionadas