Condividi tramite


Assembly con nome forte

Assegnare un nome forte a un assembly crea un'identità univoca per l'assembly e può impedire conflitti tra assembly.

Che cosa rende un assembly con nome forte?

Un assembly con nome sicuro viene generato usando la chiave privata corrispondente alla chiave pubblica distribuita con l'assembly e all'assembly stesso. L'assemblaggio include il manifesto dell'assemblaggio, che contiene i nomi e gli hash di tutti i file che costituiscono l'assemblaggio. Gli assembly che hanno lo stesso nome forte devono essere identici.

È possibile assegnare un nome sicuro agli assembly usando Visual Studio o uno strumento da riga di comando. Per altre informazioni, vedere Procedura: Firmare un assembly con un nome sicuro o Sn.exe (strumento Nome sicuro).

Quando viene creato un assembly con nome sicuro, contiene il nome semplice di testo dell'assembly, il numero di versione, le informazioni culturali facoltative, una firma digitale e la chiave pubblica corrispondente alla chiave privata usata per la firma.

Avvertimento

Non fare affidamento su nomi sicuri per la sicurezza. Forniscono solo un'identità univoca.

Perché attribuire un nome forte ai tuoi assembly?

Per .NET Framework, gli assembly con nome sicuro sono utili negli scenari seguenti:

  • Si desidera abilitare i propri assembly affinché possano essere referenziati da assembly con nome sicuro, oppure concedere l'accesso ai propri assembly da parte di altri assembly con nome sicuro.

  • Un'app deve accedere a versioni diverse dello stesso assembly. Ciò significa che sono necessarie diverse versioni dello stesso assembly per il caricamento fianco a fianco nello stesso dominio dell'app senza conflitti. Ad esempio, se esistono estensioni diverse di un'API in assembly che hanno lo stesso nome semplice, il nome forte fornisce un'identità univoca a ogni versione dell'assembly.

  • Non si vuole influire negativamente sulle prestazioni delle app usando l'assembly, quindi si vuole che l'assembly sia indipendente dal dominio. Questo richiede un nome forte perché un assembly indipendente dal dominio deve essere installato nella Global Assembly Cache (Cache globale degli assembly).

  • Si desidera centralizzare il supporto per la propria app applicando la politica del publisher, il che significa che l'assembly deve essere installato nella Global Assembly Cache.

Per .NET Core e .NET 5+, gli assembly con nome sicuro non offrono vantaggi materiali. Il runtime non valida mai la firma con nome sicuro, né usa il nome sicuro per la risoluzione degli assembly.

Se si è uno sviluppatore open source e si vogliono ottenere i vantaggi di identità di un assembly con nome sicuro per una migliore compatibilità con .NET Framework, è consigliabile controllare la chiave privata associata a un assembly al sistema di controllo del codice sorgente.

Vedere anche