Assembly con nomi sicuri

L'assegnazione di un nome sicuro a un assembly permette di creare un'identità univoca e prevenire gli eventuali conflitti con altri assembly.

Come si genera un assembly con nome sicuro?

Per generare un assembly con nome sicuro usare la chiave privata corrispondente alla chiave pubblica distribuita con l'assembly, oltre all'assembly stesso. L'assembly include il relativo manifesto, che a sua volta contiene i nomi e gli hash di tutti i file che costituiscono l'assembly. Gli assembly che hanno lo stesso nome sicuro devono essere uguali.

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

Nel creare un assembly con nome sicuro è necessario includere il nome in formato testo semplice dell'assembly, il numero di versione, le informazioni facoltative relative alle impostazioni cultura, una firma digitale e la chiave pubblica corrispondente alla chiave privata usata per apporre la firma.

Avviso

Non usare i nomi sicuri per la sicurezza, poiché forniscono solo un'identità univoca.

Perché assegnare nomi sicuri agli assembly?

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

  • Per abilitare il riferimento agli assembly da parte degli assembly con nome sicuro o per concedere a un friend l'accesso all'assembly da altri assembly con nome sicuro.

  • Un'app deve accedere a versioni diverse dello stesso assembly. Ciò significa che sono necessarie più versioni di un assembly da caricare affiancate nello stesso dominio di app senza conflitti. Ad esempio , se negli assembly esistono estensioni differenti di una API con lo stesso nome semplice, l'assegnazione di un nome sicuro consente di fornire un'identità univoca a ciascuna versione dell'assembly.

  • Non si vuole influire negativamente sulle prestazioni delle app usando il proprio assembly, quindi si usa un assembly indipendente dal dominio. Questo richiede l'uso di nomi sicuri perché gli assembly indipendenti dal dominio devono essere installati in Global Assembly Cache.

  • Si vuole centralizzare la manutenzione per l'app applicando i criteri dell'editore, ovvero 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 convalida mai la firma con nome sicuro né usa il nome sicuro per l'associazione di assembly.

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

Vedi anche