Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
.NET definisce un formato di file binario, assembly, usato per descrivere e contenere programmi .NET. Gli assembly vengono usati per i programmi stessi, nonché per le librerie dipendenti. Un programma .NET può essere eseguito come uno o più assembly, senza altri artefatti necessari, oltre all'implementazione .NET appropriata. Le dipendenze native, incluse le API del sistema operativo, sono un problema separato e non sono contenute nel formato di assembly .NET, anche se sono talvolta descritte con questo formato (ad esempio, WinRT).
Ogni componente dell'interfaccia della riga di comando contiene i metadati per dichiarazioni, implementazioni e riferimenti specifici di tale componente. Di conseguenza, i metadati specifici del componente vengono definiti metadati dei componenti e il componente risultante viene detto autodescritto, da ECMA 335 I.9.1, Componenti e assembly.
Il formato è completamente specificato e standardizzato come ECMA 335. Tutti i compilatori e i runtime .NET usano questo formato. La presenza di un formato binario documentato e aggiornato raramente è stato un vantaggio importante (probabilmente un requisito) per l'interoperabilità. Il formato è stato aggiornato in modo sostanziale nel 2005 (.NET Framework 2.0) per contenere generics e architettura del processore.
Il formato è INDIPENDENTE dalla CPU e dal sistema operativo. È stato usato come parte delle implementazioni di .NET destinate a molti chip e CPU. Anche se il formato stesso ha un patrimonio di Windows, è implementabile in qualsiasi sistema operativo. La scelta probabilmente più significativa per l'interoperabilità del sistema operativo è che la maggior parte dei valori è archiviata in formato little-endian. Non ha un'affinità specifica con le dimensioni del puntatore del computer, ad esempio a 32 bit, a 64 bit.
Il formato di assembly .NET è anche molto descrittivo sulla struttura di un determinato programma o libreria. Descrive i componenti interni di un assembly, in particolare i riferimenti agli assembly e i tipi definiti e la relativa struttura interna. Gli strumenti o le API possono leggere ed elaborare queste informazioni per la visualizzazione o per prendere decisioni a livello di codice.
Formato
Il formato binario .NET è basato sul formato di file windows PE . In effetti, le librerie di classi .NET sono conformi alle PES di Windows e vengono visualizzate a prima vista come librerie di collegamento dinamico (DLL) di Windows o eseguibili di applicazioni (EXEs). Questa è una caratteristica molto utile in Windows, in cui possono mascherare come file binari eseguibili nativi e ottenere alcuni dello stesso trattamento (ad esempio, caricamento del sistema operativo, strumenti PE).
Intestazioni di assembly da ECMA 335 II.25.1, struttura del formato di file di runtime.
Elaborare gli assemblaggi
È possibile scrivere strumenti o API per elaborare gli assembly. Le informazioni sugli assembly consentono di prendere decisioni a livello di codice in fase di esecuzione, riscrivere gli assembly, fornire IntelliSense api in un editor e generare la documentazione. System.Reflection, System.Reflection.MetadataLoadContexte Mono.Cecil sono esempi validi di strumenti usati di frequente per questo scopo.