CA2210: Assemblys müssen gültige starke Namen aufweisen
TypeName |
AssembliesShouldHaveValidStrongNames |
CheckId |
CA2210 |
Kategorie |
Microsoft.Design |
Unterbrechende Änderung |
Nicht unterbrechend |
Ursache
Eine Assembly ist nicht mit einem starken Namen signiert, der starke Name konnte nicht überprüft werden, oder der starke Name wäre ohne die aktuellen Registrierungseinstellungen des Computers ungültig.
Regelbeschreibung
Diese Regel ruft den starken Namen einer Assembly ab und überprüft ihn. Ein Verstoß erfolgt, wenn einer der folgenden Punkte zutrifft:
Die Assembly verfügt nicht über einen starken Namen.
Die Assembly wurde nach der Signierung geändert.
Die Signierung der Assembly erfolgt verzögert.
Die Assembly wurde falsch signiert, oder die Signierung schlug fehl.
Die Assembly muss Registrierungseinstellungen aufweisen, da sie sonst die Überprüfung nicht besteht. Beispielsweise wurde das Strong Name-Tool (Sn.exe) verwendet, um die Überprüfung der Assembly zu überspringen.
Der starke Name schützt Clients vor dem versehentlichen Laden einer manipulierten Assembly. Assemblys ohne starke Namen sollten nur in ganz bestimmten Szenarien bereitgestellt werden. Wenn Sie nicht einwandfrei signierte Assemblys freigeben oder verteilen, kann die Assembly manipuliert werden, die Common Language Runtime lädt die Assembly unter Umständen nicht, oder der Benutzer muss die Überprüfung auf dem Computer deaktivieren. Eine Assembly ohne starken Namen weist die folgenden Nachteile auf:
Ihr Ursprung kann nicht überprüft werden.
Die Common Language Runtime kann die Benutzer nicht warnen, wenn der Inhalt der Assembly geändert wurde.
Sie kann nicht in den globalen Assemblycache geladen werden.
Um eine verzögert signierte Assembly zu laden und zu analysieren, müssen Sie die Überprüfung der Assembly deaktivieren.
Behandeln von Verstößen
So erstellen Sie eine Schlüsseldatei
Verwenden Sie eines der folgenden Verfahren:
Verwenden Sie das im .NET Framework-SDK enthaltene Assemblylinker-Tool (Al.exe).
Verwenden Sie bei .NET Framework, Version 1.0 oder Version 1.1, entweder das System.Reflection.AssemblyKeyFileAttribute-Attribut oder das System.Reflection.AssemblyKeyNameAttribute-Attribut.
Verwenden Sie bei .NET Framework 2.0 entweder die /keyfile-Compileroption oder die /keycontainer-Compileroption /KEYFILE (Schlüsselcontainer oder Schlüsselpaar zum Signieren einer Assembly festlegen) bzw. die /KEYCONTAINER (Schlüsselcontainer zum Signieren einer Assembly festlegen)-Linkeroption in C++).
So signieren Sie die Assembly in Visual Studio mit einem starken Namen
Öffnen Sie in Visual Studio die Projektmappe.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und klicken Sie dann auf Eigenschaften.
Aktivieren Sie auf der Registerkarte Signierung das Kontrollkästchen Assembly signieren.
Wählen Sie unter Schlüsseldatei mit starkem Namen auswählen die Option Neu aus.
Das Fenster Schlüssel für einen starken Namen erstellen wird angezeigt.
Geben Sie unter Schlüsseldateiname einen Namen für den Schlüssel für einen starken Namen ein.
Wählen Sie aus, ob der Schlüssel mit einem Kennwort geschützt werden soll, und klicken Sie auf OK.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und klicken Sie dann auf Erstellen.
So signieren Sie die Assembly außerhalb von Visual Studio mit einem starken Namen
- Verwenden Sie das Tool für starke Namen (Sn.exe), das vom .NET Framework-SDK bereitgestellt wird. Weitere Informationen finden Sie unter Sn.exe (Strong Name-Tool).
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie nur dann eine Warnung dieser Regel, wenn die Assembly in einer Umgebung verwendet wird, in der die Manipulation ihres Inhalts unproblematisch ist.
Siehe auch
Aufgaben
Gewusst wie: Signieren einer Assembly mit einem starken Namen