Не позволяйте триммеру/компоновщику анализировать сборку

#.net #.net-core #.net-5

Вопрос:

Я использовал обрезку .net 5 в однофайловом приложении. Я начал использовать стороннюю библиотеку для работы с PDF-файлами, это сломало обрезку. Библиотека (Аспоз.PDF) одновременно запутан и подписан. Компоновщик выходит из строя во время его анализа.

 ILLink : error IL1005: .#=zeHKsZT8C2UlFc38B7uHg8a_68Vghn9R01uGmTgc=.#=zmlKj9i0=(): Error processing method '.#=zeHKsZT8C2UlFc38B7uHg8a_68Vghn9R01uGmTgc=.#=zmlKj9i0=()' in assembly 'Aspose.PDF.dll'
  Mono.Linker.LinkerFatalErrorException: ILLink: error IL1005: .#=zeHKsZT8C2UlFc38B7uHg8a_68Vghn9R01uGmTgc=.#=zmlKj9i0=(): Error processing method '.#=zeHKsZT8C2UlFc38B7uHg8a_68Vghn9R01uGmTgc=.#=zmlKj9i0=()' in assembly 'Aspose.PDF.dll'
   ---> System.ArgumentException: Value does not fall within the expected range.
     at Mono.Cecil.MetadataReader.GetMember[TMember](Collection`1 members, MetadataToken token)
 

Поэтому я хотел проигнорировать обрезку для этой единственной сборки. Я использовал xml-файл, чтобы указать, что я хотел сохранить, следуя записи в блоге, найденной здесь : https://devblogs.microsoft.com/dotnet/customizing-trimming-in-net-core-5/

Добавил это в мой файл .csproj :

 <ItemGroup>
    <TrimmerRootDescriptor Include="preserve.xml" />
</ItemGroup>
 

Создал preserve.xml файл со следующим содержимым :

 <linker>
    <assembly fullname="Aspose.PDF" preserve="all" />
</linker>
 

Я все еще получаю то же исключение, что заставляет меня думать, что даже если я хочу сохранить всю сборку, она выполняет анализ и выходит из строя…

Похоже, я не могу заставить компоновщика игнорировать эту сборку и просто продолжать… Есть какие-нибудь идеи/указания ?