CA2210: Gli assembly devono avere nomi sicuri validi
TypeName |
AssembliesShouldHaveValidStrongNames |
CheckId |
CA2210 |
Category |
Microsoft.Design |
Breaking Change |
Non sostanziale |
Causa
Un assembly non è firmato con un nome sicuro, il nome sicuro non può essere verificato oppure il nome sicuro non sarebbe valido senza le impostazioni correnti del Registro di sistema del computer.
Descrizione della regola
Questa regola recupera e verifica il nome sicuro di un assembly. Si verifica una violazione se qualsiasi delle seguenti condizioni è vera:
L'assembly non presenta un nome sicuro.
L'assembly è stato alterato dopo la firma.
L'assembly presenta una firma ritardata.
L'assembly è stato firmato in modo errato o il processo di firma non è riuscito.
L'assembly richiede impostazioni del Registro di sistema per superare la verifica. Ad esempio, è stato utilizzato lo strumento Nome sicuro (Sn.exe) per ignorare la verifica dell'assembly.
Il nome sicuro protegge i client dal caricamento involontario di un assembly alterato. Gli assembly con nomi sicuri non devono essere distribuiti al di fuori di scenari molto limitati. Se si condividono o distribuiscono assembly non firmati correttamente, l'assembly può essere alterato, non essere caricato in Common Language Runtime oppure l'utente potrebbe avere la necessità di disabilitare la verifica nel proprio computer. Un assembly senza un nome sicuro presenta i seguenti svantaggi:
Non è possibile verificarne l'origine.
In Common Language Runtime non è possibile avvisare gli utenti se il contenuto dell'assembly è stato alterato.
Non può essere caricato nella Global Assembly Cache.
Si noti che per caricare e analizzare un assembly con firma ritardata è necessario disabilitare la verifica per l'assembly.
Come correggere le violazioni
Per creare una file di chiavi
Utilizzare una delle seguenti procedure:
Utilizzare lo strumento Assembly Linker (Al.exe) fornito da .NET Framework SDK.
Per .NET Framework v1.0 o v1.1, utilizzare l'attributo System.Reflection.AssemblyKeyFileAttribute o System.Reflection.AssemblyKeyNameAttribute.
Per .NET Framework 2.0, utilizzare l'opzione del compilatore /keyfile o /keycontainer (opzione del linker /KEYFILE (Specify Key or Key Pair to Sign an Assembly) o /KEYCONTAINER (Specify a Key Container to Sign an Assembly) in C++).
Per firmare l'assembly con un nome sicuro in Visual Studio
In Visual Studio, aprire la soluzione.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Proprietà.
Fare clic sulla scheda Firma e selezionare la casella di controllo Firma assembly.
Da Scegli un file chiave con nome sicuro selezionare Nuovo.
Verrà visualizzata la finestra Crea chiave con nome sicuro.
In Nome file di chiave digitare un nome per la chiave con nome sicuro.
Scegliere se proteggere la chiave con una password, quindi scegliere OK.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Compila.
Per firmare l'assembly con un nome sicuro all'esterno di Visual Studio
- Utilizzare lo strumento del nome sicuro (Sn.exe) fornito da .NET Framework SDK. Per ulteriori informazioni, vedere Sn.exe (strumento Nome sicuro).
Esclusione di avvisi
Escludere un avviso da questa regola solo se l'assembly è utilizzato in un ambiente dove non si pone il problema di alterazione del contenuto.
Vedere anche
Attività
Procedura: firmare un assembly con un nome sicuro
Riferimenti
Sn.exe (strumento Nome sicuro)