Un ensamblado (o assembly en inglés) es la unidad fundamental de código que el .NET Framework utiliza para la gestión, distribución y versionado de aplicaciones.
Los ensamblados permiten encapsular funcionalidades específicas que pueden ser reutilizadas en diferentes proyectos. Además, pueden ser distribuidos como archivos independientes, simplificando el compartir componentes o aplicaciones.
Finalmente, el manifiesto de los ensamblados permite gestionar diferentes versiones del mismo ensamblado (esto es muy importante para el correcto funcionamiento de las aplicaciones de .NET).
Los ensamblados son el bloque básico con el que se construyen aplicaciones en .NET. Digamos que, si .NET fuera construir un edificio, los ensamblados serían los ladrillos con los que construyes las paredes.
Creación y tipos de ensamblado
Para crear un ensamblado el código fuente debe compilarse. Este proceso transforma el código fuente de C# en un archivo binario puede ser:
- Ensamblados Ejecutables (EXE): Estos contienen un punto de entrada, como el método
Main
, y pueden ser ejecutados directamente por el sistema operativo. - Ensamblados de Biblioteca (DLL - Dynamic Link Library): Estos ensamblados contienen código que puede ser reutilizado por otras aplicaciones. No pueden ser ejecutados por sí mismos.
El archivo de ensamblado final incluye código compilado, metadatos y recursos adicionales como imágenes o archivos de configuración.
Estructura de un ensamblado
Un ensamblado en C# está compuesto por varios elementos clave:
Código IL (Intermediate Language)
El código fuente de C# se compila en un lenguaje intermedio llamado IL, que es ejecutado por el Common Language Runtime (CLR). Este IL es independiente de la plataforma, permitiendo que el mismo ensamblado sea ejecutado en diferentes entornos de .NET.
Manifiesto
Contiene información sobre el ensamblado en sí, como su versión, las dependencias y los permisos de seguridad. Actúa como la “tabla de contenido” del ensamblado.
- Nombre del ensamblado.
- Versión.
- Cultura.
- Lista de archivos que componen el ensamblado.
- Dependencias de otros ensamblados.
- Permisos de seguridad.
Metadatos
Los metadatos contienen descripciones detalladas sobre los tipos, métodos, propiedades y eventos definidos en el ensamblado. Facilitan la reflexión y la interoperabilidad entre lenguajes, permitiendo a otros ensamblados o aplicaciones entender y utilizar el código de manera efectiva.
Recursos
Los ensamblados pueden incluir recursos como imágenes, archivos de sonido, cadenas localizadas y otros archivos necesarios para la aplicación. Estos recursos son embebidos directamente en el ensamblado, simplificando su distribución y uso.