IL3058: сборка, на которую ссылаются, не помечена для совместимости с AOT

Причина

Проект <VerifyReferenceAotCompatibility>true</VerifyReferenceAotCompatibility> настроен, а для одной или нескольких ссылочных сборок атрибут IsAotCompatible метаданных сборки не задан как true.

Описание правила

При публикации с использованием Native AOT и отметке проекта как AOT-совместимого с помощью <PublishAot>true</PublishAot> или <IsAotCompatible>true</IsAotCompatible>, можно также включить проверку того, что все ссылочные сборки также аннотированы для совместимости с AOT. Это помогает гарантировать, что все зависимости вашего проекта помечены для совместимости с AOT.

Задайте свойству VerifyReferenceAotCompatibility значение true в файле проекта, чтобы включить эту проверку.

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

Если это свойство включено, анализатор проверяет, что все <IsAotCompatible>true</IsAotCompatible> сборки, на которые есть ссылка, были собраны с этим свойством, что добавляет атрибут [assembly: AssemblyMetadata("IsAotCompatible", "True")] уровня сборки в сборку.

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.

Устранение нарушений

Это предупреждение можно исправить несколькими способами:

  • Если вы управляете исходным кодом библиотеки, обновите созданную библиотеку.<IsAotCompatible>true</IsAotCompatible> Свойство IsAotCompatible помечает сборку как совместимую с Native AOT и включает выполнение анализа, специфичного для AOT. Это предпочтительный подход.
  • Если вы уверены, что библиотека правильно работает с Native AOT даже без атрибута, отключите проверку, настроив <VerifyReferenceAotCompatibility>false</VerifyReferenceAotCompatibility> в файле проекта.

См. также