Um arquivo de Assembly .NET, tipicamente com a extensão '.dll' (Dynamic Link Library) ou '.exe' (Executable), é uma unidade compilada de código escrita em uma linguagem .NET, como C#, VB.NET ou F#. Ele contém código em Common Intermediate Language (CIL), também conhecido como MSIL (Microsoft Intermediate Language), metadados que descrevem o código e recursos como imagens ou arquivos de configuração. Os assemblies são os blocos de construção fundamentais das aplicações .NET. Eles fornecem uma maneira de empacotar e implantar código, gerenciar o controle de versão e aplicar limites de segurança. O tempo de execução do .NET, o Common Language Runtime (CLR), executa o código CIL dentro do assembly. Os assemblies podem ser aplicações executáveis (.exe) ou bibliotecas (.dll) que fornecem código reutilizável para outras aplicações. Eles são autodescritivos, o que significa que contêm todas as informações necessárias para que o CLR os carregue e execute, incluindo dependências de outros assemblies. Os metadados dentro do assembly, conhecidos como manifesto do assembly, especificam o nome, a versão, a cultura, a chave pública e as dependências do assembly. Isso permite que o CLR resolva dependências e garanta que as versões corretas dos assemblies sejam carregadas. Os assemblies são cruciais para a criação de aplicações .NET modulares, sustentáveis e escaláveis.