SYSLIB0055: AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate*-Methoden mit signierten Parametern sind veraltet.
Die folgenden Methoden, die ganze Zahlen akzeptieren, sind beginnend mit .NET 9 veraltet:
- AdvSimd.Arm64.ShiftRightLogicalRoundedNarrowingSaturateScalar(Vector64<Int64>, Byte)
- AdvSimd.Arm64.ShiftRightLogicalRoundedNarrowingSaturateScalar(Vector64<Int16>, Byte)
- AdvSimd.Arm64.ShiftRightLogicalRoundedNarrowingSaturateScalar(Vector64<Int32>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<Int16>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<Int64>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<Int32>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<SByte>, Vector128<Int16>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<Int16>, Vector128<Int32>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<Int32>, Vector128<Int64>, Byte)
Wenn Sie diese im Code aufrufen, wird zur Kompilierzeit die Warnung SYSLIB0055
ausgelöst.
Grund für das Auslaufen
Die Arm Advanced SIMD-UQRSHRN
-Anweisung führt einen nicht signierten, gesättigten schmalen Vorgang aus. Daher ist das Ergebnis nie signiert. Die betroffenen APIs akzeptierten und gaben signierte Typen zurück, was bedeutet, dass sie nicht wie erwartet funktionierten, wenn Sie anstatt der Anweisungsbeschreibung die API-Beschreibung befolgt haben. Darüber hinaus kann die zugrunde liegende Implementierung nicht korrigiert werden, um signierte, gesättigte schmale Vorgänge auszuführen und signierte Ergebnisse zurückzugeben.
Problemumgehung
Konvertieren Sie die Daten gezielt in signierte Typen, und rufen Sie die entsprechende nicht signierte Überladung auf, z. B. AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<UInt32>, Vector128<UInt64>, Byte). Konvertieren Sie das Ergebnis dann gezielt in einen signierten Typ.
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 SYSLIB0055
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0055
Um alle SYSLIB0055
-Warnungen in Ihrem Projekt zu unterdrücken, fügen Sie ihrer Projektdatei eine <NoWarn>
-Eigenschaft hinzu.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0055</NoWarn>
</PropertyGroup>
</Project>
Weitere Informationen finden Sie unter Unterdrücken von Warnungen.