Um arquivo de Assembly .NET, tipicamente com a extensão '.dll' (Dynamic Link Library - Biblioteca de Ligação Dinâmica) ou '.exe' (Executável), é uma unidade de código compilado escrita em uma linguagem .NET como C#, VB.NET ou F#. Ele contém código 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. Assemblies são os blocos de construção fundamentais das aplicações .NET. Eles fornecem uma maneira de empacotar e implantar código, gerenciar versionamento e impor limites de segurança. O runtime .NET, o Common Language Runtime (CLR), executa o código CIL contido no assembly. Assemblies podem ser aplicações executáveis (.exe) ou bibliotecas (.dll) que fornecem código reutilizável para outras aplicações. Eles são auto-descritivos, o que significa que contêm todas as informações necessárias para o CLR carregá-los e executá-los, 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. Assemblies são cruciais para criar aplicações .NET modulares, de fácil manutenção e escaláveis.