Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Property | Value |
|---|---|
| Regel-ID | CA1516 |
| Title | Verwenden plattformübergreifender systeminterner Anwendungen |
| Category | Maintainability |
| Fix ist unterbrechend oder nicht durchbrechend | Non-breaking |
| Standardmäßig in .NET 10 aktiviert | No |
Cause
Eine plattform- oder architekturspezifische systeminterne Anwendung wird verwendet, wenn eine plattformübergreifende Entsprechung vorhanden ist.
Regelbeschreibung
Diese Regel erkennt die Verwendung plattformspezifischer systeminterner Geräte, die stattdessen durch eine entsprechende plattformübergreifende systeminterne Ersetzt werden können.
Wie man Verstöße behebt
Wenden Sie den Fixer an, der den Code wechselt, um das entsprechende plattformübergreifende systeminterne System zu verwenden.
Example
Der folgende Codeausschnitt zeigt drei ähnliche Verletzungen von CA1516:
using System;
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.Arm;
using System.Runtime.Intrinsics.Wasm;
using System.Runtime.Intrinsics.X86;
class C
{
Vector128<byte> M1(Vector128<byte> x, Vector128<byte> y) => AdvSimd.Add(x, y);
Vector128<byte> M2(Vector128<byte> x, Vector128<byte> y) => Sse2.Add(x, y);
Vector128<byte> M3(Vector128<byte> x, Vector128<byte> y) => PackedSimd.Add(x, y);
}
Der folgende Codeausschnitt behebt die Verletzung und würde vom Fixer angewendet werden:
using System;
using System.Runtime.Intrinsics;
class C
{
Vector128<byte> M1(Vector128<byte> x, Vector128<byte> y) => x + y;
Vector128<byte> M2(Vector128<byte> x, Vector128<byte> y) => x + y;
Vector128<byte> M3(Vector128<byte> x, Vector128<byte> y) => x + y;
}
Sobald der Fix angewendet wurde, wird es offensichtlicher, dass die drei Methoden vereinfacht werden können, um eine einzelne Methode zu sein, die auf allen Plattformen funktioniert.
Wann sollten Warnungen unterdrückt werden?
Es ist sicher, einen Verstoß gegen diese Regel zu unterdrücken, wenn Sie sich keine Gedanken über die Wartbarkeit Ihres Codes machen.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA1516
// The code that's violating the rule is on this line.
#pragma warning restore CA1516
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, setzen Sie dessen Schweregrad auf none in der Konfigurationsdatei fest.
[*.{cs,vb}]
dotnet_diagnostic.CA1516.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.
Konfigurieren des zu analysierenden Codes
Sie können konfigurieren, auf welche Ausgabeassemblytypen diese Regel angewendet werden soll. Fügen Sie einer .editorconfig-Datei in Ihrem Projekt das folgende Schlüssel-Wert-Paar hinzu, wenn diese Regel beispielsweise nur auf Code angewendet werden soll, mit dem eine Konsolenanwendung oder eine dynamisch verknüpfte Bibliothek (also keine Benutzeroberflächen-App) erstellt wird:
dotnet_code_quality.CA1516.output_kind = ConsoleApplication, DynamicallyLinkedLibrary
Weitere Informationen finden Sie unter output_kind.