Partager via


IL3058 : L’assembly référencé n’est pas annoté pour la compatibilité AOT

La cause

Un projet a défini <VerifyReferenceAotCompatibility>true</VerifyReferenceAotCompatibility>, et un ou plusieurs assemblies référencés n'ont pas l'attribut de métadonnées d'assembly IsAotCompatible paramétré à true.

Description de la règle

Lorsque vous publiez avec Native AOT à l’aide <PublishAot>true</PublishAot> ou marquez votre projet comme compatible avec <IsAotCompatible>true</IsAotCompatible>AOT, vous pouvez éventuellement activer la vérification que tous les assemblys référencés sont également annotés pour la compatibilité AOT. Cela permet de s’assurer que toutes les dépendances de votre projet sont annotées pour la compatibilité AOT.

Pour activer cette vérification, définissez la VerifyReferenceAotCompatibility propriété true dans le fichier de votre projet :

<PropertyGroup>
  <PublishAot>true</PublishAot>
  <VerifyReferenceAotCompatibility>true</VerifyReferenceAotCompatibility>
</PropertyGroup>

Lorsque cette propriété est activée, l’analyseur vérifie que tous les assemblys référencés ont été générés avec <IsAotCompatible>true</IsAotCompatible>, ce qui ajoute l’attribut [assembly: AssemblyMetadata("IsAotCompatible", "True")] au niveau de l’assembly.

Example

// Assembly reference: MyLibrary.dll (built without <IsAotCompatible>true</IsAotCompatible>)

public class Program
{
    public static void Main()
    {
        var obj = new MyLibrary.SomeClass();
    }
}
warning IL3058: Referenced assembly 'MyLibrary' is not built with `<IsAotCompatible>true</IsAotCompatible>` and may not be compatible with AOT.

Comment corriger les violations

Vous avez plusieurs options pour corriger cet avertissement :

  • Mettez à jour la bibliothèque référencée à générer avec <IsAotCompatible>true</IsAotCompatible>. Il s’agit de l’approche recommandée si vous contrôlez le code source de la bibliothèque. La IsAotCompatible propriété marque l’assembly comme compatible avec AOT natif et active l’analyse spécifique à AOT.
  • Désactivez la vérification en définissant <VerifyReferenceAotCompatibility>false</VerifyReferenceAotCompatibility> dans votre fichier projet si vous êtes certain que la bibliothèque fonctionne correctement avec AOT natif, même sans l’attribut.

Voir aussi