c# .net

c# - ¿Qué es un módulo administrado(comparado con un ensamblaje)?



.net (3)

¿Qué es el módulo administrado en .NET y en qué se diferencia de los ensamblajes? ¿Es un archivo PE (por ejemplo, test.dll) un módulo administrado o un conjunto? ¿Cómo se corresponde el ensamblaje / módulo administrado a los archivos físicos en el disco?


Los módulos administrados son las versiones IL compiladas del código fuente. La extensión del archivo que se crea al crear un módulo a partir de archivos de origen es .netmodule.

Los ensamblajes son archivos DLL o .exe que contienen módulos administrados, recursos y metadatos.


En general, se entiende que un módulo administrado se refiere a un módulo que solo contiene código IL, sin código de máquina directo.

Un módulo está alojado en un archivo PE normal.

Un conjunto es un conjunto de 1 o más módulos, con uno designado como ''cabeza'' (buscará el término exacto [1]). Sin embargo, un módulo en sí mismo no tiene mucho uso individual, ya que el ensamblaje es la unidad atómica.

Por ejemplo, podría tener un conjunto de módulos múltiples con 2 DLL y un EXE. Sin embargo, los montajes de módulos múltiples son bastante raros.

El libro de Don Box, Esssential .NET, Richter CLR a través de C # ofrece una buena cobertura del tema. Para obtener detalles completos, el libro Serge Lidin .NET 2.0 IL Assembler y el estándar CLI son más completos.

[1] Según http://www.programmersheaven.com/2/FAQ-DOTNET-DOTNET-Assembly-Explained

Un ensamblaje puede ser un solo archivo o puede consistir en varios archivos. En el caso de archivos múltiples, hay un módulo maestro que contiene el manifiesto, mientras que otros conjuntos existen como módulos no manifiestos

Para responder a las preguntas reales: -

¿Qué es el módulo administrado en .NET y en qué se diferencia de los ensamblajes?

Es un subconjunto (una DLL puede ser un módulo maestro sin módulos secundarios) y, por lo tanto, también un conjunto

¿Es un archivo PE (por ejemplo, test.dll) un módulo administrado o un conjunto?

Definitivamente un módulo. Si también tiene un manifiesto y ningún módulo secundario, también es un ensamblaje.

¿Cómo se corresponde el ensamblaje / módulo administrado a los archivos físicos en el disco? Cada módulo es un archivo. (Herramientas como ILMerge pueden combinar módulos si está interesado)


Un módulo contiene IL y muchos de ellos están vinculados entre sí para crear un ensamblaje, que generalmente se encuentra en un PE como un .exe o un .dll.

Un PE también puede contener código nativo (no administrado).

Esta es una buena introducción a los conceptos.