MSTEST0072: [AssemblyFixtureProvider]' wordt niet ondersteund met compilatie van tevoren

Property Waarde
Regel-ID MSTEST0072
Title [AssemblyFixtureProvider]' wordt niet ondersteund met compilatie van tevoren
Categorie Usage
Fix kan brekend of niet-brekend zijn Non-breaking
standaard ingeschakeld Yes
standaardniveau van ernst Warning
geïntroduceerd in versie 4.4.0 (preview)
Is er een oplossing voor de code No

Important

Deze analyzer is gepland voor MSTest 4.4 en is alleen beschikbaar in preview-versies totdat MSTest 4.4.0 wordt uitgebracht.

Oorzaak

Een project is van toepassing [AssemblyFixtureProvider], rechtstreeks of via een bibliotheek waarnaar wordt verwezen, tijdens het publiceren met Systeemeigen AOT (PublishAot) of Blazor WebAssembly AOT (RunAOTCompilation).

Beschrijving van regel

[AssemblyFixtureProvider] detectie begeleidt de referentiegrafiek van de runtime-assembly, waarvoor de runtime dynamische code moet genereren. Compilaties van tevoren, zoals Native AOT en Blazor WebAssembly AOT, kunnen geen dynamische code genereren, dus de runtime slaat detectie op de achtergrond over en de methoden van [AssemblyInitialize]/[AssemblyCleanup] de armaturen worden nooit uitgevoerd.

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

De analyse rapporteert deze diagnose, ongeacht of het kenmerk wordt toegepast in de huidige compilatie of op een assembly waarnaar wordt verwezen, omdat in beide gevallen het verbruikende systeemeigen AOT-testproject op de achtergrond de montagearmaturen verliest.

Hoe schendingen op te lossen

Declareer de [AssemblyInitialize] en [AssemblyCleanup] methoden rechtstreeks in de testassembly in plaats van te vertrouwen op een gedeelde [AssemblyFixtureProvider] bibliotheek.

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

Wanneer waarschuwingen onderdrukken

Onderdrukt geen waarschuwingen van deze regel voor een project dat daadwerkelijk publiceert met Systeemeigen AOT of Blazor WebAssembly AOT, omdat de armaturenmethoden niet worden uitgevoerd en er geen status bestaat die ze hebben ingesteld voor uw tests. Onderdrukken is alleen redelijk als de door AOT gepubliceerde configuratie de betrokken tests niet uitvoert.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

#pragma warning disable MSTEST0072
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0072

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst ervan in op none in het configuratiebestand.

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

Zie Hoe u codeanalysewaarschuwingen kunt onderdrukken voor meer informatie.

Zie ook