MSTEST0072: '[AssemblyFixtureProvider]' wird bei der Vorabkompilierung nicht unterstützt.

Eigenschaft Wert
Regel-ID MSTEST0072
Title '[AssemblyFixtureProvider]' wird bei der Vorabkompilierung nicht unterstützt.
Kategorie Usage
Die Behebung ist eingreifend oder nicht eingreifend Non-breaking
Standardmäßig aktiviert Ja
Voreingestellte Schwere Warning
wurde in Version eingeführt. 4.4.0 (Vorschau)
Gibt es eine Codekorrektur No

Important

Dieser Analyzer ist für MSTest 4.4 geplant und ist nur in Vorschaubuilds verfügbar, bis MSTest 4.4.0 veröffentlicht wird.

Ursache

Ein Projekt wird entweder direkt oder über eine referenzierte Bibliothek angewendet[AssemblyFixtureProvider], während es mit Native AOT () oder Blazor WebAssembly AOT (PublishAotRunAOTCompilation) veröffentlicht wird.

Regelbeschreibung

[AssemblyFixtureProvider] discovery führt das Laufzeitassemblyverweisdiagramm durch, das die Laufzeit zum Generieren von dynamischem Code erfordert. Vorabkompilierungsaromen wie Native AOT und Blazor WebAssembly AOT können keinen dynamischen Code generieren, sodass die Laufzeit die Erkennung im Hintergrund überspringt und die Methoden der [AssemblyInitialize]/[AssemblyCleanup] Einrichtung nie ausgeführt werden.

// Violation: ignored at run time under Native AOT / Blazor WebAssembly AOT.
[assembly: AssemblyFixtureProvider(typeof(SharedFixtures))]

Die Analyse meldet diese Diagnose, ob das Attribut in der aktuellen Kompilierung oder auf eine Assembly angewendet wird, auf die verwiesen wird, da das verbrauchende Native AOT-Testprojekt im Hintergrund seine Montageinstallationen verliert.

Wie man Verstöße behebt

Deklarieren Sie die [AssemblyInitialize] Methoden und [AssemblyCleanup] Methoden direkt in der Testassembly, anstatt auf eine freigegebene [AssemblyFixtureProvider] Bibliothek zu vertrauen.

public static class Fixtures
{
    [AssemblyInitialize]
    public static void Init(TestContext context) { }
}

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnungen aus dieser Regel für ein Projekt, das tatsächlich mit Native AOT oder Blazor WebAssembly AOT veröffentlicht wird, da die Einrichtungsmethoden nicht ausgeführt werden und für Ihre Tests kein Zustand vorhanden ist. Die Unterdrückung ist nur dann sinnvoll, wenn die AOT-veröffentlichte Konfiguration die betroffenen Tests nicht ausführt.

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 MSTEST0072
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0072

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad auf none in der Konfigurationsdatei fest.

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0072.severity = none

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Siehe auch