Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ursache
Ein Projekt hat <VerifyReferenceAotCompatibility>true</VerifyReferenceAotCompatibility> festgelegt, und bei mindestens einer referenzierten Assembly ist das Assemblymetadaten-Attribut nicht auf IsAotCompatible festgelegt.
Regelbeschreibung
Wenn Sie mit Native AOT veröffentlichen, indem Sie <PublishAot>true</PublishAot> verwenden, oder Ihr Projekt als AOT-kompatibel mit <IsAotCompatible>true</IsAotCompatible> kennzeichnen, können Sie optional die Überprüfung aktivieren, dass alle referenzierten Assemblies auch auf AOT-Kompatibilität annotiert sind. Dadurch wird sichergestellt, dass alle Abhängigkeiten in Ihrem Projekt auf AOT-Kompatibilität annotiert werden.
Um diese Überprüfung zu aktivieren, legen Sie die Eigenschaft VerifyReferenceAotCompatibility in der Projektdatei auf true fest:
<PropertyGroup>
<PublishAot>true</PublishAot>
<VerifyReferenceAotCompatibility>true</VerifyReferenceAotCompatibility>
</PropertyGroup>
Wenn diese Eigenschaft aktiviert ist, überprüft der Analyzer, ob alle referenzierten Assemblys mit <IsAotCompatible>true</IsAotCompatible> erstellt wurden, was das Attribut [assembly: AssemblyMetadata("IsAotCompatible", "True")] auf Assemblyebene zur Assembly hinzufügt.
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.
Wie man Verstöße behebt
Sie haben mehrere Optionen, um diese Warnung zu beheben:
- Wenn Sie den Quellcode der Bibliothek steuern, aktualisieren Sie die referenzierte Bibliothek, um sie mit
<IsAotCompatible>true</IsAotCompatible>zu erstellen. DieIsAotCompatibleEigenschaft kennzeichnet die Assembly als kompatibel mit Native AOT und ermöglicht AOT-spezifische Analysen. Dies ist der bevorzugte Ansatz. - Wenn Sie sicher sind, dass die Bibliothek auch ohne das Attribut ordnungsgemäß mit Native AOT funktioniert, deaktivieren Sie die Überprüfung indem Sie es in Ihrer Projektdatei festlegen
<VerifyReferenceAotCompatibility>false</VerifyReferenceAotCompatibility>.