Delen via


IL3058: De gerefereerde assembly is niet geannoteerd voor AOT-compatibiliteit

Oorzaak

Een project is <VerifyReferenceAotCompatibility>true</VerifyReferenceAotCompatibility> ingesteld en een of meer assembly's waarnaar wordt verwezen, hebben het kenmerk metagegevens van de IsAotCompatible assembly niet ingesteld op true.

Beschrijving van regel

Wanneer u publiceert met Native AOT door gebruik te maken van <PublishAot>true</PublishAot> of uw project markeert als AOT-compatibel met <IsAotCompatible>true</IsAotCompatible>, kunt u er optioneel voor kiezen om de verificatie in te schakelen dat alle verwijzende assembly's ook voor AOT-compatibiliteit zijn geannoteerd. Dit helpt ervoor te zorgen dat alle afhankelijkheden in uw project worden geannoteerd voor AOT-compatibiliteit.

Als u deze verificatie wilt inschakelen, stelt u de VerifyReferenceAotCompatibility eigenschap true in op in het projectbestand:

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

Wanneer deze eigenschap is ingeschakeld, controleert de analyse of alle assembly's waarnaar wordt verwezen, zijn gebouwd met <IsAotCompatible>true</IsAotCompatible>, waarmee het kenmerk [assembly: AssemblyMetadata("IsAotCompatible", "True")] op assemblyniveau wordt toegevoegd aan de 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.

Hoe schendingen op te lossen

U hebt verschillende opties om deze waarschuwing op te lossen:

  • Als u controle heeft over de broncode van de bibliotheek, werkt u de bibliotheek waarnaar wordt verwezen bij zodat deze kan worden gebouwd met <IsAotCompatible>true</IsAotCompatible>. De IsAotCompatible eigenschap markeert de assembly als compatibel met systeemeigen AOT en maakt AOT-specifieke analyse mogelijk. Dit is de voorkeursbenadering.
  • Als u zeker weet dat de bibliotheek correct werkt met Native AOT, zelfs zonder het kenmerk, schakelt u de verificatie uit door de instelling in uw projectbestand te wijzigen <VerifyReferenceAotCompatibility>false</VerifyReferenceAotCompatibility> .

Zie ook