Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przyczyna
Projekt został <VerifyReferenceAotCompatibility>true</VerifyReferenceAotCompatibility> ustawiony, a co najmniej jeden z odwoływanych zestawów nie ma atrybutu metadanych zestawu ustawionego na IsAotCompatibletrue.
Opis reguły
Podczas publikowania z użyciem Native AOT przy użyciu <PublishAot>true</PublishAot> lub oznaczania projektu jako zgodnego z AOT za pomocą <IsAotCompatible>true</IsAotCompatible>, można opcjonalnie włączyć weryfikację, że wszystkie przywoływane zestawy są również oznaczone jako zgodne z AOT. Dzięki temu wszystkie zależności w projekcie są adnotowane dla zgodności z AOT.
Aby włączyć tę weryfikację VerifyReferenceAotCompatibility , ustaw właściwość na true w pliku projektu:
<PropertyGroup>
<PublishAot>true</PublishAot>
<VerifyReferenceAotCompatibility>true</VerifyReferenceAotCompatibility>
</PropertyGroup>
Po włączeniu tej właściwości analizator sprawdza, czy wszystkie przywołane zestawy zostały skompilowane z użyciem <IsAotCompatible>true</IsAotCompatible>, co powoduje dodanie atrybutu [assembly: AssemblyMetadata("IsAotCompatible", "True")] dla zestawu.
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.
Jak naprawić naruszenia
Istnieje kilka opcji rozwiązania tego ostrzeżenia:
- Jeśli kontrolujesz kod źródłowy biblioteki, zaktualizuj przywołyną bibliotekę do skompilowania za pomocą polecenia
<IsAotCompatible>true</IsAotCompatible>. WłaściwośćIsAotCompatibleoznacza zestaw jako zgodny z Natywnym AOT i włącza analizę specyficzną dla AOT. Jest to preferowane podejście. - Jeśli masz pewność, że biblioteka działa poprawnie z natywną funkcją AOT nawet bez atrybutu, wyłącz weryfikację , ustawiając wartość
<VerifyReferenceAotCompatibility>false</VerifyReferenceAotCompatibility>w pliku projektu.