Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| 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.