2010-01-13 7 views
9

Soy relativamente nuevo en la programación ASP.NET (pero no en la programación en general), y he estado revisando un proyecto que me fue entregado. Dentro de este proyecto, hay un directorio bin que contiene una gran cantidad de varios archivos DLL.ASP.NET - directorio bin vs Agregar ensamblado en web.conf

Luego, en el archivo web.conf, dentro de la estructura de ensamblajes (dentro del XML), hay una gran cantidad de ensambles agregados.

He hecho una búsqueda tanto en SO como a través de Google en general, y todavía estoy luchando sobre cuál es la diferencia entre los dos. ¿Hay una manera "mejor" que la otra? Cualquier aclaración que se pueda proporcionar sería muy apreciada.

Gracias.

Respuesta

8

Hay varias maneras de hacer referencia asambleas (DLL), por lo general en una aplicación ASP.NET:

  1. añadir el archivo DLL en el directorio "bin" de la aplicación. Esto crea una referencia implícita en cada archivo de código y archivo ASPX en su aplicación a esa DLL. Esto significa que el código dentro de un archivo ASPX o dentro de un archivo CS en App_Code puede usar los tipos en esa DLL.

  2. Agregue una referencia a la DLL en la sección <assemblies> en web.config. Consulte MSDN para obtener detalles sobre la sintaxis. En general, hay varios archivos web.config que se aplican a una aplicación web en particular. La aplicación en sí puede tener varios archivos web.config (por ejemplo, un archivo web.config en una carpeta en particular puede agregar sus propias referencias). También hay un web.config (o machine.config) global que tiene referencias disponibles para todas las aplicaciones ASP.NET en la computadora.

  3. Utilice la directiva <%@ Assembly Name="" %> en un archivo ASPX (o ASCX o MASTER) en particular. Consulte MSDN para obtener detalles sobre la sintaxis.

Las referencias en un archivo dado en una aplicación ASP.NET son una combinación de los elementos anteriores.

La razón por la que tiene que hacer referencia a los ensamblados es que los archivos ASPX (al igual que los archivos CS y VB) finalmente se compilan con el compilador C# o VB. Para que esos compiladores sepan qué tipos quieres usar, necesitan saber qué ensambles contienen esos tipos.

+0

¡Gracias por la respuesta! Buena información. Una pregunta: entre 1 y 2, ¿hay alguna razón por la que quisiera elegir una sobre la otra? – JasCav

+1

Elegiría # 1 si el archivo DLL no tiene una firma de nombre fuerte, en cuyo caso * no * puede estar en el GAC porque el GAC requiere que el ensamblado esté firmado. Elegiría # 2 si el DLL está instalado en el GAC. Por lo tanto, no es realmente una "elección" per se, sino más bien una matriz de decisión. – Eilon

1

El directorio bin es una copia de todos los dll que su proyecto crea y referencia. Cuando la aplicación web se está ejecutando, busca en el directorio bin los dll físicos que necesita para ejecutar la aplicación web.

+0

Su segundo párrafo tiene declaraciones incorrectas. Las DLL a las que hace referencia web.config nunca se copian en el directorio bin - * ever *. – Eilon

Cuestiones relacionadas