.NET Framework Cos'è un assemblaggio?


Esempio

Gli assiemi sono la base di qualsiasi applicazione Common Language Runtime (CLR) . Ogni tipo che definisci, insieme ai suoi metodi, proprietà e il loro bytecode, viene compilato e inserito in un Assembly.

using System.Reflection;

Assembly assembly = this.GetType().Assembly;   

Gli assembly sono auto-documentanti: non solo contengono tipi, metodi e il loro codice IL, ma anche i metadati necessari per ispezionarli e consumarli, sia in fase di compilazione che in fase di runtime:

Assembly assembly = Assembly.GetExecutingAssembly();

foreach (var type in assembly.GetTypes())
{
    Console.WriteLine(type.FullName);
}

Gli assembly hanno nomi che descrivono la loro identità completa e univoca:

Console.WriteLine(typeof(int).Assembly.FullName);
// Will print: "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

Se questo nome include un PublicKeyToken , viene chiamato un nome PublicKeyToken . Assegnare un nome forte a un assembly è il processo di creazione di una firma utilizzando la chiave privata corrispondente alla chiave pubblica distribuita con l'assembly. Questa firma viene aggiunta al manifest Assembly, che contiene i nomi e gli hash di tutti i file che compongono l'assembly e il suo PublicKeyToken diventa parte del nome. Gli assembly che hanno lo stesso nome forte dovrebbero essere identici; i nomi forti vengono utilizzati nel controllo delle versioni e per impedire conflitti di assembly.