Assembly in Common Language Runtime

Gli assembly sono i blocchi predefiniti per la creazione delle applicazioni .NET Framework. Essi sono gli elementi fondamentali di distribuzione, controllo delle versioni, riutilizzo, ambito di attivazione e autorizzazioni di sicurezza. Un assembly è una raccolta di tipi e risorse progettati per interagire tra loro e formare così un'unica unità funzionale. Con gli assembly si forniscono a Common Language Runtime le informazioni necessarie sulle implementazioni dei tipi. Per Common Language Runtime non esiste alcun tipo all'esterno del contesto di un assembly.

Un assembly svolge le seguenti funzioni:

  • Contiene codice che viene eseguito da Common Language Runtime. Il codice Microsoft Intermediate Language (MSIL) contenuto in un file eseguibile portabile (PE, Portable Executable) non verrà eseguito se ad esso non è associato il manifesto di un assembly. Ogni assembly può avere un solo punto di ingresso, vale a dire DllMain, WinMain o Main.

  • Costituisce un limite di sicurezza. Un assembly è l'unità che riceve e accoglie le richieste di autorizzazione. Per ulteriori informazioni sulla relazione tra limiti di sicurezza e assembly, vedere Considerazioni sulla sicurezza degli assembly.

  • Costituisce un limite per i tipi. L'identità di ogni tipo include il nome dell'assembly in cui il tipo risiede. Un tipo denominato MyType caricato nell'ambito di un assembly non sarà uguale a un tipo denominato MyType caricato nell'ambito di un assembly diverso.

  • Costituisce un limite per l'ambito dei riferimenti. Il manifesto dell'assembly contiene i metadati dell'assembly, che vengono utilizzati per la risoluzione dei tipi e per soddisfare le richieste di risorse. Essi specificano i tipi e le risorse che sono esposte all'esterno dell'assembly. Inoltre, il manifesto enumera altri assembly da cui dipende.

  • Costituisce un limite di versione. L'assembly è la più piccola unità aggiornabile di Common Language Runtime. Le versioni di tutti i tipi e di tutte le risorse appartenenti allo stesso assembly vengono aggiornate in blocco. Il manifesto dell'assembly descrive le dipendenze di versione che lo sviluppatore specifica per ciascun assembly dipendente. Per ulteriori informazioni sul controllo delle versioni, vedere Controllo delle versioni degli assembly.

  • Costituisce un'unità di distribuzione. All'avvio di un'applicazione, gli unici assembly la cui presenza è indispensabile sono quelli chiamati dall'applicazione in quel momento. Gli altri assembly, quali quelli delle risorse di localizzazione o quelli contenenti classi di utilità, possono essere recuperati su richiesta. In questo modo è possibile ottenere applicazioni che al primo download siano semplici e leggere. Per ulteriori informazioni sulla distribuzione degli assembly, vedere Distribuzione di applicazioni.

  • Costituisce l'unità minima per cui è supportata l'esecuzione contemporanea di diverse versioni. Per ulteriori informazioni sull'esecuzione di più versioni dello stesso assembly, vedere Assembly ed esecuzione contemporanea di diverse versioni.

Gli assembly possono essere statici o dinamici. Gli assembly statici possono includere tipi .NET Framework (interfacce e classi), così come risorse per l'assembly (immagini bitmap, file JPEG, file di risorse e così via). Gli assembly statici vengono memorizzati sul disco in file eseguibili portabili (PE, Portable Executable). È anche possibile utilizzare .NET Framework per creare assembly dinamici che vengono eseguiti direttamente dalla memoria e non richiedono il preventivo salvataggio su disco. È anche possibile salvare gli assembly dinamici sul disco dopo averli eseguiti.

Gli assembly possono essere creati in più modi. È possibile utilizzare strumenti di sviluppo, come Visual Studio 2005, già impiegati per la generazione di file con estensione dll o exe. In alternativa, è possibile utilizzare gli strumenti forniti con Windows Software Development Kit (SDK) per generare assembly con moduli creati in altri ambienti di sviluppo. Infine, è possibile creare assembly dinamici utilizzando librerie API di Common Language Runtime come Reflection.Emit.

Argomenti correlati

Titolo

Descrizione

Vantaggi degli assembly

Viene descritto come gli assembly consentono di risolvere i problemi relativi al controllo delle versioni e ai conflitti tra DLL.

Contenuto degli assembly

Vengono descritti gli elementi che compongono un assembly.

Manifesto dell'assembly

Vengono descritti i dati nel manifesto dell'assembly e la procedura seguita per archiviare dati negli assembly.

Global Assembly Cache

Viene descritta la Global Assembly Cache e il relativo impiego.

Assembly con nomi sicuri

Vengono descritte le caratteristiche degli assembly con nome sicuro.

Considerazioni sulla sicurezza degli assembly

Viene discussa la relazione tra le problematiche di sicurezza e l'utilizzo degli assembly.

Controllo delle versioni degli assembly

Viene fornita una panoramica dei criteri di gestione delle versioni adottati in .NET Framework.

Ubicazione degli assembly

Viene illustrato dove trovare gli assembly.

assembly ed esecuzione contemporanea di più versioni

Viene fornita una panoramica sull'utilizzo contemporaneo di più versioni di Common Language Runtime o di un assembly.

Programmazione con gli assembly

Viene descritto come creare, firmare e impostare gli attributi degli assembly.

Creazione di assembly e metodi dinamici

Viene descritto come creare assembly dinamici.

Come il runtime individua gli assembly

Viene descritto il modo in cui .NET Framework risolve i riferimenti agli assembly in fase di esecuzione.

Riferimenti

System.Reflection.Assembly