Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
В этой статье перечислены шаблоны, несовместимые с урезкой с современным инструментом.
Сериализаторы на основе рефлексии
Альтернатива: сериализаторы без использования рефлексии.
Многие виды использования рефлексии можно сделать совместимыми с обрезкой, как описано в Введение в предупреждения об обрезке. Однако сериализаторы, как правило, имеют сложные случаи применения рефлексии. Многие из этих применений не могут быть сделаны анализируемыми во время сборки. К сожалению, наиболее подходящим вариантом часто является перезапись системы для использования исходного поколения.
В следующей таблице перечислены популярные сериализаторы на основе отражения и их рекомендуемые альтернативные варианты.
| Сериализаторы | Альтернатива |
|---|---|
| Newtonsoft.Json |
Источник создан System.Text.Json |
| System.Configuration.ConfigurationManager | Генератор исходного кода для привязки конфигурации |
| System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | Отказаться от использования сериализации BinaryFormatter из-за ее недостатков в безопасности и надежности. |
Создание кода среды выполнения с помощью JIT
Создание кода среды выполнения через JIT,например, через System.Reflection.Emit несовместимо с обрезкой.
Динамическая загрузка и выполнение сборки
Обрезка и динамическая загрузка сборок — это распространенная проблема для систем, поддерживающих подключаемые модули или расширения, обычно через API, например LoadFrom(String). Обрезка зависит от учета всех сборок во время сборки, чтобы определить, какой код используется и какой код не может быть удален как неиспользуемый. Большинство плагин-систем загружают сторонний код динамически, поэтому триммер не может определить, какой код необходим.
Несовместимость платформы Windows
В следующих разделах перечислены известные несовместимости с обрезкой в Windows.
Программирование NET с помощью C++/CLI
Программирование .NET с помощью C++/CLI в настоящее время не поддерживает функцию удаления лишних элементов.
Встроенная маршализация COM
Альтернатива: COM-обертки
Автоматический маршаллинг COM был встроен в .NET с .NET Framework 1.0. Он использует анализ кода среды выполнения для автоматического преобразования между собственными COM-объектами и управляемыми объектами .NET. К сожалению, анализ тримминга не всегда может определить, какой .NET код следует сохранить для автоматического COM маршаллинга. Однако, если вместо этого используются COM-обертки, анализ тримминга может гарантировать, что весь используемый код будет правильно сохранен.
WPF (Windows Presentation Foundation)
Платформа Windows Presentation Foundation (WPF) значительно использует отражение, и некоторые функции сильно зависят от проверки кода среды выполнения. Невозможно обрезать анализ, чтобы сохранить весь необходимый код для приложений WPF. К сожалению, почти никаких приложений WPF не выполняются после обрезки, поэтому поддержка обрезки WPF в настоящее время отключена в пакете SDK для .NET. Смотрите проблему "WPF не совместим с обрезкой" для получения информации о прогрессе в обеспечении совместимости обрезки для WPF.
Windows Forms
Платформа Windows Forms обеспечивает минимальное использование отражения, но в значительной степени зависит от встроенного маршаллинга COM. К сожалению, почти все приложения Windows Forms невозможно запустить без встроенного маршаллинга COM, поэтому поддержка обрезки для приложений Windows Forms в настоящее время отключена в пакете SDK для .NET. Смотрите статью о проблеме сделать WinForms совместимым с обрезкой для отслеживания прогресса в включении этой функции для Windows Forms.