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.
| 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.