Assemblys müssen gültige starke Namen aufweisen

     TypeName

AssembliesShouldHaveValidStrongNames

CheckId

CA2210

Kategorie

Microsoft.Design

Unterbrechende Änderung

NonBreaking

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.

Behandlung von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, erstellen Sie mit dem Strong Name-Tool (sn.exe) eine Schlüsseldatei, und signieren Sie die Assembly mithilfe eines der folgenden Verfahren mit einem starken Namen:

  • 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 (die /KEYFILE-Linkeroption bzw. die /KEYCONTAINER-Linkeroption in C++).

Warnungsausschluss

Schließen Sie nur dann eine Warnung dieser Regel aus, 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

Referenz

Strong Name-Tool (Sn.exe)
System.Reflection.AssemblyKeyFileAttribute
System.Reflection.AssemblyKeyNameAttribute