SYSLIB0045: Einige kryptografische Factorymethoden sind veraltet

Die folgenden System.Security.Cryptography-Methoden sind ab .NET 7 veraltet. Ihre Verwendung im Code ruft zur Kompilierzeit die Warnung SYSLIB0045 hervor. Jede dieser Factorymethoden akzeptiert ein Zeichenfolgenargument, das den Algorithmusnamen darstellt. Diese Methoden rufen in CryptoConfig.CreateFromName auf und wandeln das Ergebnis in den Rückgabetyp um.

Diese Methoden wurden mit [Obsolete] markiert, weil sie in gekürzten Anwendungen null zurückgeben können, was in nicht gekürzten Anwendungen nicht möglich ist. Außerdem überrascht das auf Ausnahmen basierende Verhalten dieser Methoden in nicht gekürzten Anwendungen gelegentlich die Aufrufer, und viele der bekannten Bezeichner sind mit Typen verbunden, die selbst mit [Obsolete] gekennzeichnet sind.

Problemumgehung

Aufrufe, die eine konstante Zeichenfolge übergeben, sollten entweder in die parameterlose Factorymethode oder in einen starken Aufruf geändert werden, um den entsprechenden Typ zu erstellen. Zum Beispiel kann ein Aufruf von Aes.Create("AES") entweder durch Aes.Create() oder new AesCryptoServiceProvider() ersetzt werden. Da der Typ AesCryptoServiceProvider auch mit [Obsolete] gekennzeichnet ist, ist Aes.Create() die bevorzugte Ersetzung.

Aufrufe, die eine nicht konstante Zeichenfolge übergeben, können entweder ihre eigene Lookuptabelle verwenden oder in einen direkten Aufruf von CryptoConfig.CreateFromName geändert werden.

Unterdrücken einer Warnung

Wenn Sie die veralteten APIs verwenden müssen, können Sie die Warnung im Code oder in Ihrer Projektdatei unterdrücken.

Um nur einen einzelnen Verstoß zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Warnung zu deaktivieren und dann wieder zu aktivieren.

// Disable the warning.
#pragma warning disable SYSLIB0045

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB0045

Um alle SYSLIB0045-Warnungen in Ihrem Projekt zu unterdrücken, fügen Sie ihrer Projektdatei eine <NoWarn>-Eigenschaft hinzu.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0045</NoWarn>
  </PropertyGroup>
</Project>

Weitere Informationen finden Sie unter Unterdrücken von Warnungen.