Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O .NET define um formato de arquivo binário, assembly, que é usado para descrever e conter totalmente os programas .NET. Os assemblies são usados para os programas em si, bem como todas as bibliotecas dependentes. Um programa .NET pode ser executado como um ou mais assemblies, sem nenhum outro artefato necessário, além da implementação apropriada do .NET. As dependências nativas, incluindo APIs do sistema operacional, são uma preocupação separada e não estão contidas no formato de assembly do .NET, embora às vezes sejam descritas com esse formato (por exemplo, WinRT).
Cada componente da CLI carrega os metadados para declarações, implementações e referências específicas a esse componente. Portanto, os metadados específicos do componente são chamados de metadados de componente, e o componente resultante é considerado autodescrevendo – da ECMA 335 I.9.1, Componentes e assemblies.
O formato é totalmente especificado e padronizado como ECMA 335. Todos os compiladores e runtimes do .NET usam esse formato. A presença de um formato binário documentado e pouco atualizado tem sido um grande benefício (indiscutivelmente um requisito) para interoperabilidade. O formato foi atualizado pela última vez de forma substantiva em 2005 (.NET Framework 2.0) para acomodar genéricos e arquitetura de processador.
O formato é independente da CPU e do sistema operacional. Ele tem sido usado como parte de implementações do .NET direcionadas a muitos chips e CPUs. Embora o formato em si tenha a herança do Windows, ele é implementável em qualquer sistema operacional. Sua escolha indiscutivelmente mais significativa para a interoperabilidade do sistema operacional é que a maioria dos valores é armazenada no formato little endian. Ele não tem uma afinidade específica com o tamanho do ponteiro do computador (por exemplo, 32 bits, 64 bits).
O formato de assembly do .NET também é muito descritivo sobre a estrutura de um determinado programa ou biblioteca. Descreve os componentes internos de uma assemblagem, especificamente as referências de assemblagem e os tipos definidos e sua estrutura interna. Ferramentas ou APIs podem ler e processar essas informações para exibição ou para tomar decisões programáticas.
Formato
O formato binário do .NET baseia-se no formato de arquivo do Windows PE . Na verdade, as bibliotecas de classes do .NET são PEs do Windows compatíveis e aparecem à primeira vista para serem DLLs (bibliotecas de vínculo dinâmico) do Windows ou EXEs (executáveis de aplicativo). Essa é uma característica muito útil no Windows, em que eles podem se disfarçar de binários executáveis nativos e obter alguns dos mesmos tratamentos (por exemplo, carga do sistema operacional, ferramentas PE).
Cabeçalhos de assembly do ECMA 335 II.25.1, Estrutura do formato de arquivo do runtime.
Processar os conjuntos
É possível escrever ferramentas ou APIs para processar assemblies. As informações de assembly permitem tomar decisões programáticas em runtime, reescrever assemblies, fornecer a API IntelliSense em um editor e gerar documentação. System.Reflection, System.Reflection.MetadataLoadContexte Mono.Cecil são bons exemplos de ferramentas que são frequentemente usadas para essa finalidade.