Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
| Propriété | Valeur |
|---|---|
| Identificateur de la règle | MSTEST0072 |
| Titre | '[AssemblyFixtureProvider]' n’est pas pris en charge avec la compilation anticipée |
| Category | Usage |
| Le correctif a un effet disruptif ou non disruptif | Non-breaking |
| Activé par défaut | Yes |
| Sévérité par défaut | Warning |
| Introduit dans la version | 4.4.0 (préversion) |
| Existe-t-il une correction de code | No |
Important
Cet analyseur est planifié pour MSTest 4.4 et est disponible uniquement dans les versions préliminaires jusqu’à la publication de MSTest 4.4.0.
Cause
Un projet s’applique [AssemblyFixtureProvider], directement ou via une bibliothèque référencée, lors de la publication avec Native AOT (PublishAot) ou Blazor WebAssembly AOT (RunAOTCompilation).
Description de la règle
[AssemblyFixtureProvider] la découverte guide le graphique de référence d’assembly runtime, ce qui nécessite que le runtime génère du code dynamique. Les versions de compilation anticipées telles que Native AOT et Blazor WebAssembly AOT ne peuvent pas générer de code dynamique. Par conséquent, le runtime ignore silencieusement la découverte et les méthodes du [AssemblyInitialize]/[AssemblyCleanup] dispositif ne s’exécutent jamais.
// Violation: ignored at run time under Native AOT / Blazor WebAssembly AOT.
[assembly: AssemblyFixtureProvider(typeof(SharedFixtures))]
L’analyseur signale ce diagnostic si l’attribut est appliqué dans la compilation actuelle ou sur un assembly référencé, car l’utilisation du projet de test AOT natif perd silencieusement ses appareils d’assembly.
Comment corriger les violations
Déclarez les méthodes et [AssemblyCleanup] les [AssemblyInitialize] méthodes directement dans l’assembly de test au lieu de compter sur une bibliothèque partagée[AssemblyFixtureProvider].
public static class Fixtures
{
[AssemblyInitialize]
public static void Init(TestContext context) { }
}
Quand supprimer les avertissements
Ne supprimez pas les avertissements de cette règle pour un projet qui publie réellement avec Native AOT ou Blazor WebAssembly AOT, car les méthodes de montage ne s’exécutent pas et aucun état qu’ils configurent n’existeront pour vos tests. La suppression est raisonnable uniquement si la configuration publiée par AOT n’exécute pas les tests affectés.
Supprimer un avertissement
Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.
#pragma warning disable MSTEST0072
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0072
Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0072.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements d’analyse du code.