IL2125: указанная сборка не помечена для совместимости обрезки

Причина

Проект имеет установленный <VerifyReferenceTrimCompatibility>true</VerifyReferenceTrimCompatibility>, а одна или несколько связанных сборок не имеют атрибута метаданных сборки IsTrimmable установленного в true.

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

При публикации обрезаемого приложения с помощью <PublishTrimmed>true</PublishTrimmed> или пометки вашего проекта как обрезаемого с использованием <IsTrimmable>true</IsTrimmable>, можно включить проверку совместимости с обрезкой, чтобы все указанные сборки также были аннотированы для этого. Это помогает гарантировать, что все зависимости в проекте помечены для обеспечения совместимости обрезки.

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

<PropertyGroup>
  <PublishTrimmed>true</PublishTrimmed>
  <VerifyReferenceTrimCompatibility>true</VerifyReferenceTrimCompatibility>
</PropertyGroup>

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

Example

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

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

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

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

  • Если вы управляете исходным кодом библиотеки, обновите созданную библиотеку.<IsTrimmable>true</IsTrimmable> Рекомендации по созданию библиотек, совместимых с обрезкой, см. в статье "Подготовка библиотек .NET для обрезки". Это предпочтительный подход.
  • Если вы уверены, что библиотека работает правильно с обрезкой даже без атрибута, отключите проверку , установив параметр <VerifyReferenceTrimCompatibility>false</VerifyReferenceTrimCompatibility> в файле проекта.

См. также