¿Qué son los ensamblados .NET?

193

¿Qué son los ensamblados .NET? Navegué por la red y no puedo entender la definición.

Massyle Djama
fuente
11
Lea CLR a través de C # . Lo sabrás todo al final. Recomiendo altamente este libro.
David Neale

Respuestas:

169

En términos más simples: Un trozo de código (precompilado) que puede ser ejecutado por el entorno de tiempo de ejecución .NET. Un programa .NET consta de uno o más ensamblados.

Adrian Grigore
fuente
30
@KimJongWoo - No, un archivo Jar es solo un archivo zip que contiene archivos compilados de bytecode. Un ensamblado es un archivo PE (formato ejecutable portátil) (es decir, un archivo DLL o EXE), pero conceptualmente tienen propósitos similares.
Erik Funkenbusch
Entonces, ¿es como un .classarchivo en el mundo Java?
mljrg
245

El ensamblaje es la unidad más pequeña de implementación de una aplicación .net. Puede ser un dll o un exe .
Hay principalmente dos tipos:

  1. Ensamblado privado: el dll o exe que es propiedad exclusiva de una sola aplicación. Generalmente se almacena en la carpeta raíz de la aplicación

  2. Ensamblado público / compartido: es un archivo dll que puede ser utilizado por múltiples aplicaciones a la vez. Un ensamblado compartido se almacena en GAC, es decir , la caché de ensamblados global .

¿Suena dificil? Naa ....
GAC es simplemente C: \ Windows \ Assembly carpeta donde puede encontrar los ensamblados / dlls públicos de todos los softwares instalados en su PC.

También hay un tercer tipo y menos conocido de ensamblaje: el ensamblaje satelital .
Un conjunto de satélites contiene solo objetos estáticos como imágenes y otros archivos no ejecutables requeridos por la aplicación.

Espero que esto ayude a los lectores!

mangeshkt
fuente
3
Tenga en cuenta que la ubicación es diferente para .NET 4.0: stackoverflow.com/questions/2660355/net-4-0-has-a-new-gac-why
TrueWill
Eso podría ser lento. después de que una carpeta obtiene miles de esas, Windows se vuelve más lento tratando de recorrer el árbol de directorios o simplemente leer el directorio.
Jim Michaels
@mangeshkt - ¿Es posible copiar el dll de una aplicación y ponerla en el directorio raíz de otra? ¿Podré usar la funcionalidad de la primera?
Shivam657
57

Ensambles

Cuando compila una aplicación, el código MSIL creado se almacena en un ensamblado. Los ensamblados incluyen tanto archivos de aplicaciones ejecutables que puede ejecutar directamente desde Windows sin la necesidad de ningún otro programa (estos tienen una extensión de archivo .exe) como bibliotecas (que tienen una extensión .dll) para que otras aplicaciones los usen.

Además de contener MSIL, los ensambles también incluyen metainformación (es decir, información sobre la información contenida en el ensamblado, también conocida como metadatos) y recursos opcionales (datos adicionales utilizados por MSIL, como archivos de sonido e imágenes). La metainformación permite que los ensambles sean completamente autodescriptivos. No necesita otra información para usar un ensamblado, lo que significa que evita situaciones como no agregar los datos requeridos al registro del sistema, etc., que a menudo era un problema cuando se desarrollaba con otras plataformas.

Esto significa que la implementación de aplicaciones suele ser tan simple como copiar los archivos en un directorio en una computadora remota. Como no se requiere información adicional sobre los sistemas de destino, puede ejecutar un archivo ejecutable desde este directorio y (suponiendo que .NET CLR esté instalado) está listo para comenzar.

Por supuesto, no necesariamente querrá incluir todo lo necesario para ejecutar una aplicación en un solo lugar. Puede escribir algún código que realice tareas requeridas por múltiples aplicaciones. En situaciones como esa, a menudo es útil colocar el código reutilizable en un lugar accesible para todas las aplicaciones. En .NET Framework, este es el Global Assembly Cache (GAC). Colocar código en el GAC es simple: simplemente coloca el ensamblaje que contiene el código en el directorio que contiene este caché.

Saleh
fuente
Para mayor claridad "Cuando compila una aplicación, el código MSIL creado se almacena en un ensamblado". Solo para agregar para ver el contenido de un ensamblaje puede usar ILSPY.
Sandeep
33

Un ensamblado es el archivo .dll real en su disco duro donde se almacenan las clases en .NET Framework. Por ejemplo, todas las clases contenidas en el Framework ASP.NET se encuentran en un ensamblado llamado System.Web.dll.

Más exactamente, un ensamblaje es la unidad principal de implementación, seguridad y control de versiones en .NET Framework. Debido a que un ensamblaje puede abarcar varios archivos, a un ensamblaje a menudo se lo denomina dll "lógico".

Nota

.NET Framework (versión 2.0) incluye 51 ensamblajes.

Hay dos tipos de ensamblajes: privados y compartidos. Un ensamblado privado puede ser utilizado por una sola aplicación. Un ensamblado compartido, por otro lado, puede ser utilizado por todas las aplicaciones ubicadas en el mismo servidor.

Los ensamblados compartidos se encuentran en la Caché de ensamblados global (GAC). Por ejemplo, el ensamblado System.Web.dll y todos los demás ensamblados incluidos con .NET Framework se encuentran en la Caché de ensamblados global.

Nota

La Caché de ensamblados global se encuentra físicamente en la carpeta \ WINDOWS \ Assembly de su computadora. Hay una copia separada de cada ensamblado en su carpeta \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727. El primer conjunto de ensamblajes se usa en tiempo de ejecución y el segundo conjunto se usa en tiempo de compilación.

Antes de poder usar una clase contenida en un ensamblaje en su aplicación, debe agregar una referencia al ensamblaje. De manera predeterminada, una aplicación ASP.NET hace referencia a los ensamblados más comunes contenidos en la Caché de ensamblados global:

mscorlib.dll

System.dll

System.Configuration.dll

System.Web.dll

System.Data.dll

System.Web.Services.dll

System.Xml.dll

System.Drawing.dll

System.EnterpriseServices.dll

System.Web.Mobile.dll

Para usar cualquier clase en particular en .NET Framework, debe hacer dos cosas. Primero, su aplicación debe hacer referencia al ensamblado que contiene la clase. En segundo lugar, su aplicación debe importar el espacio de nombres asociado con la clase.

En la mayoría de los casos, no se preocupará por hacer referencia al ensamblaje necesario porque los ensamblajes más comunes se referencian automáticamente. Sin embargo, si necesita usar un ensamblaje especializado, debe agregar una referencia explícita al ensamblaje. Por ejemplo, si necesita interactuar con Active Directory mediante el uso de las clases en el espacio de nombres System.DirectoryServices, deberá agregar una referencia al ensamblado System.DirectoryServices.dll a su aplicación.

Cada entrada de clase en la documentación de .NET Framework SDK enumera el ensamblado y el espacio de nombres asociados con la clase. Por ejemplo, si busca la clase MessageQueue en la documentación, descubrirá que esta clase se encuentra en el espacio de nombres System.Messaging ubicado en el ensamblado System.Messaging.dll.

Si está utilizando Visual Web Developer, puede agregar una referencia a un ensamblado explícitamente seleccionando la opción de menú Sitio web, Agregar referencia y seleccionando el nombre del ensamblaje al que necesita hacer referencia. Por ejemplo, al agregar una referencia al ensamblado System.Messaging.dll, se agrega el archivo de configuración web en el Listado 1.4 a su aplicación.

P.ej. Web.Config

enter code here

Si prefiere no usar Visual Web Developer, puede agregar la referencia al ensamblado System.Messaging.dll creando manualmente el archivo en el ejemplo anterior.

Hung Vu
fuente
1
Mucho más técnico que la respuesta aceptada, esta debería ser la respuesta aceptada.
sparkyShorts
8

Wikipedia tiene que decir:

En el marco Microsoft .NET, un ensamblado es una biblioteca de código parcialmente compilada para su uso en implementación, versiones y seguridad. Hay dos tipos: ensamblajes de proceso (EXE) y ensamblajes de biblioteca (DLL). Un ensamblaje de proceso representa un proceso que utilizará clases definidas en ensamblajes de biblioteca. Los ensamblados .NET contienen código en CIL, que generalmente se genera a partir de un lenguaje CLI, y luego el compilador CLR just-in-time lo compila en lenguaje máquina en tiempo de ejecución. Un ensamblaje puede constar de uno o más archivos. Los archivos de código se llaman módulos. Un ensamblado puede contener más de un módulo de código y, dado que es posible usar diferentes idiomas para crear módulos de código, es técnicamente posible usar varios idiomas diferentes para crear un ensamblaje.

Si realmente navegaras, sería útil aclarar lo que no entiendes

Christina Mayers
fuente
7

Mira esto :

En el marco de Microsoft .NET, un ensamblado es una biblioteca de código parcialmente compilada para su uso en implementación, versiones y seguridad

Anton Gogolev
fuente
7

Colección física de clase, interfaz, enumeración, etc. que se encuentra en el código IL. Que puede ser un archivo .EXE o .DLL .EXE es un archivo ejecutable y .DLL se puede usar dinámicamente en cualquier lenguaje compatible con .net.

Govind Malviya
fuente
6

Un ensamblaje es una unidad de tiempo de ejecución que consta de tipos y otros recursos. Todos los tipos en un ensamblaje tienen el mismo número de versión.

A menudo, un ensamblado tiene solo un espacio de nombres y es utilizado por un programa. Pero puede abarcar varios espacios de nombres. Además, un espacio de nombres puede extenderse a varios conjuntos. En diseños grandes, un ensamblaje puede consistir en múltiples archivos que se mantienen unidos por un manifiesto (es decir, una tabla de contenido).

En C #, un ensamblado es la implementación más pequeña de una aplicación .Net. Puede ser un dll o un exe. Tiene dos tipos: 1. Ensamblado privado 2. Ensamblado público / compartido

Abhishek Singh
fuente
6

Además de la respuesta aceptada, ¡quiero darte un ejemplo!

Por ejemplo, todos usamos

System.Console.WriteLine()

Pero, ¿dónde está el código para System.Console.WriteLine?
¿Cuál es el código que realmente pone el texto en la consola?

Si mira la primera página de la documentación para la clase Consola , verá cerca de la parte superior lo siguiente: Ensamblado: mscorlib (en mscorlib.dll) Esto indica que el código para la clase Consola se encuentra en un ensamblador llamado mscorlib. Un ensamblado puede constar de varios archivos, pero en este caso es solo un archivo, que es la biblioteca de enlaces dinámicos mscorlib.dll.

El archivo mscorlib.dll es muy importante en .NET. Es el archivo DLL principal para las bibliotecas de clases en .NET y contiene todas las clases y estructuras básicas de .NET.

Si conoce C o C ++, generalmente necesita una directiva #include en la parte superior que haga referencia a un archivo de encabezado. El archivo de inclusión proporciona prototipos de funciones al compilador. en el contraste El compilador de C # no necesita archivos de encabezado. Durante la compilación, el compilador de C # accede al archivo mscorlib.dll directamente y obtiene información de los metadatos en ese archivo con respecto a todas las clases y otros tipos definidos en él.

El compilador de C # puede establecer que mscorlib.dll sí contiene una clase llamada Console en un espacio de nombres llamado System con un método llamado WriteLine que acepta un único argumento de tipo string.

El compilador de C # puede determinar que la llamada WriteLine es válida, y el compilador establece una referencia al ensamblado mscorlib en el ejecutable.

de forma predeterminada, el compilador de C # accederá a mscorlib.dll, pero para otras DLL, deberá informar al compilador el ensamblado en el que se encuentran las clases. Estos se conocen como referencias.

¡Espero que esté claro ahora!

De DotNetBookZero Charles pitzold

Ahmed KhaShaba
fuente
5

MSDN tiene una buena explicación :

Los ensamblados son los componentes básicos de las aplicaciones de .NET Framework; forman la unidad fundamental de implementación, control de versiones, reutilización, alcance de activación y permisos de seguridad. Un ensamblaje es una colección de tipos y recursos creados para trabajar juntos y formar una unidad lógica de funcionalidad. Un ensamblado proporciona a Common Language Runtime la información que necesita para conocer las implementaciones de tipos. Para el tiempo de ejecución, un tipo no existe fuera del contexto de un ensamblado.

Matt Warren
fuente
4

Un ensamblaje es una colección de tipos y recursos que forma una unidad lógica de funcionalidad. Todos los tipos en .NET Framework deben existir en ensamblados; Common Language Runtime no admite tipos fuera de ensamblados. Cada vez que crea una aplicación de Microsoft Windows®, un servicio de Windows, una biblioteca de clases u otra aplicación con Visual Basic .NET, está creando un único ensamblado. Cada ensamblaje se almacena como un archivo .exe o .dll.

Fuente: https://msdn.microsoft.com/en-us/library/ms973231.aspx#assenamesp_topic4

Para aquellos con antecedentes de Java como yo, espero que el siguiente diagrama aclare los conceptos:

Los ensamblados son como archivos jar (que contienen múltiples archivos .class). Su código puede hacer referencia a un ensamblado existente o su propio código puede publicarse como un ensamblaje para que otro código haga referencia y use (puede considerar esto como archivos jar en Java que puede agregar en las dependencias de su proyecto).

Al final del día, un ensamblado es un código compilado que se puede ejecutar en cualquier sistema operativo con CLR instalado. Esto es lo mismo que decir que el archivo .class o el jar incluido pueden ejecutarse en cualquier máquina con JVM instalado.

ingrese la descripción de la imagen aquí

Aniket Thakur
fuente
2

En .Net, un ensamblaje puede ser:

Una colección de diversas manejables partes que contienen Types (or Classes), Resources (Bitmaps/Images/Strings/Files), Namespaces, Config Filescompilado Privatelyo Publicly; desplegado en una localo Shared (GAC)carpeta; discover-ablepor otro programs/assembliesy; puede ser versionado

VS1
fuente
2

Como el ensamblado es la unidad más pequeña de seguridad de versiones, implementación y reutilización de código en Microsoft.Net.

Contiene:

- Assembly Identity
- Manifest
- Metadata
- MSIL Code
- Security Information
- Assembly Header
Lay Leangsros
fuente
1

El ensamblaje es la parte fundamental de la programación con .NET Framework. Contiene código que CLR ejecuta. El código MSIL (lenguaje intermedio de Microsoft) en un archivo ejecutable portátil no se ejecutará si no tiene un manifiesto de ensamblado asociado.

Kamini joshi
fuente
1

Las aplicaciones .NET se construyen juntando cualquier número de ensamblajes. En pocas palabras, un ensamblado no es más que un binario versionado y autodescriptivo (DLL o EXE) que contiene una colección de tipos (clases, interfaces, estructuras, etc.) y recursos opcionales (imágenes, tablas de cadenas y demás). Una cosa a tener en cuenta ahora es que la organización interna de un ensamblado .NET no se parece en nada a la organización interna de un servidor COM clásico (independientemente de las extensiones de archivo compartidas).

Shivam Sharma
fuente
1

En .NET, cuando compilamos nuestro código fuente, el ensamblado se genera en Visual Studio. El ensamblaje consta de dos partes: Manifiesto e IL (lenguaje intermedio). El manifiesto contiene metadatos de ensamblaje: los requisitos de versión del ensamblado, la identidad de seguridad, los nombres y los hash de todos los archivos que componen el ensamblaje. IL contiene información sobre clases, constructores, método principal, etc.

Gagan
fuente
1

Las soluciones de Visual Studio consisten en uno o más proyectos. Por ejemplo: los proyectos de consola pueden producir un ensamblaje . Un ensamblado es lógicamente una porción de código que puede enviarse a los clientes, y físicamente un .EXE (programa ejecutable) o .DLL (son reutilizables por otros programas).

Eldiyar Talantbek
fuente