En Microsoft .NET framework, un ensamblado[1] es principalmente una biblioteca de código compilado para ser utilizado en instalaciones, versionamiento y seguridad. Existen 2 tipos: ensamblados de procesos (EXE) y bibliotecas de ensamblados (DLL).
Un ensamblado de proceso representa un ejecutable que posiblemente usará clases definidas en ensamblados de bibliotecas, o ejecutará solo código contenido en sí mismo. Los ensamblados de .NET contienen código en lenguaje CIL, el cual es normalmente generado mediante los lenguajes .NET, y luego compilado a código máquina en tiempo de ejecución por un compilador en tiempo de ejecución, en inglés just - in time compiler, que en .NET es parte del CLR.
No se puede catalogar a .NET como un lenguaje de programación interpretado. Algunos autores tienden a catalogarlo como un lenguaje compilado, ya que el CIL es leído y compilado por el CLR, con las ventajas del just - in time
Un ensamblado puede consistir en uno o más archivos. Los archivos de código son llamados módulos. Un ensamblado puede contener más de un módulo de código y es posible utilizar diferentes lenguajes en los diferentes módulos para crear el ensamblado de .NET. Visual Studio, sin embargo, no permite utilizar diferentes lenguajes en un ensamblado, por lo que la compilación de ensamblados con varios lenguajes debe ser realizada desde la consola de comandos.
Por buenas prácticas de desarrollo se acostumbra ubicar una única clase en cada archivo del ensamblado, pero cabe recordar que un módulo, un archivo, puede contener varias clases dentro de él, aunque no es recomendable.
Los ensamblados pueden tener diferentes decoradores que definen el entorno de ejecución de los mismos: COM+, DCOM, Remoting, etc.