Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Свойства и элементы MSBuild, описанные в этой статье, влияют на поведение обрезки автономных развертываний. Некоторые параметры упоминают ILLink
, то есть имя базового инструмента, реализующего обрезку. Дополнительные сведения о базовом средстве см. в документации по средству обрезки.
Обрезка с помощью параметра PublishTrimmed
появилась в .NET Core 3.0. Другие варианты доступны в .NET 5 и более поздних версиях.
Включение обрезки
<PublishTrimmed>true</PublishTrimmed>
Включение обрезки во время публикации. Этот параметр также отключает несовместимые функции обрезки и включает анализ обрезки во время сборки. В приложениях .NET 8 и более поздних версий этот параметр также включает привязку конфигурации и генераторы источников делегата делегата.
Примечание.
Если вы указали обрезку в командной строке, процесс отладки будет отличаться, и в конечном продукте могут возникнуть дополнительные ошибки.
Поместите этот параметр в файл проекта, чтобы обеспечить применение параметра во время dotnet build
, а не только dotnet publish
.
Этот параметр также позволяет анализатору Roslyn обеспечить совместимость с обрезкой и отключает функции, несовместимые с обрезкой.
Анализатор Roslyn
Параметр PublishTrimmed
в .NET 6+ также включает анализатор Roslyn, показывающий ограниченный набор предупреждений анализа. Вы также можете включить или отключить анализатор независимо от PublishTrimmed
.
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>
Включение анализатора Roslyn для подмножества предупреждений анализа обрезки.
Отключение предупреждений
Вы можете отключить отдельные коды предупреждений, используя обычные свойства MSBuild, уважаемые цепочкой инструментов, включая NoWarn
, WarningsAsErrors
WarningsNotAsErrors
и TreatWarningsAsErrors
. Существует дополнительный параметр, который управляет поведением ilLink warn-as-error независимо:
<ILLinkTreatWarningsAsErrors>false</ILLinkTreatWarningsAsErrors>
Не обрабатывайте предупреждения ILLink как ошибки. Это может быть полезно, чтобы избежать включения предупреждений обрезки в ошибки при обработке предупреждений компилятора как ошибок глобально.
Отображение подробных предупреждений
В .NET 6+анализ обрезки создает по крайней мере одно предупреждение для каждой сборки, полученной из нее PackageReference
, указывая, что внутренние элементы сборки несовместимы с обрезкой. Можно также отобразить отдельные предупреждения для всех сборок:
<TrimmerSingleWarn>false</TrimmerSingleWarn>
Отображение всех подробных предупреждений вместо совмещения их в одном предупреждении для каждой сборки.
Удаление символов
Символы обычно обрезаются в соответствии с обрезными сборками. Можно также удалить все символы.
<TrimmerRemoveSymbols>true</TrimmerRemoveSymbols>
Удалите символы из обрезанного приложения, включая внедренные PDB-файлы и отдельные PDB. Это относится как к коду приложения, так и к любым зависимостям, которые входят в состав символов.
Пакет SDK также позволяет отключить поддержку отладчика, используя свойство DebuggerSupport
. Если поддержка отладчика отключена, обрезка автоматически удаляет символы (TrimmerRemoveSymbols
по умолчанию — true).
Функции библиотеки обрезки платформы
Несколько функциональных возможностей библиотек платформы поставляются с директивами средства обрезки, которые позволяют удалить код для отключенных функций.
Свойство MSBuild | Описание |
---|---|
AutoreleasePoolSupport |
Если задано значение false , удаляет код, который создает пулы авторесулирования на поддерживаемых платформах.
false — это значение по умолчанию для пакета SDK для .NET. |
DebuggerSupport |
Если задано значение false , удаляет код, позволяющий улучшить отладку. Этот параметр также удаляет символы. |
EnableUnsafeBinaryFormatterSerialization |
Если задано значение false , удаляется поддержка сериализации BinaryFormatter. Дополнительные сведения см. в статье "Методы сериализации BinaryFormatter" устарели , а реализация BinaryFormatter in-box удалена и всегда вызывается. |
EnableUnsafeUTF7Encoding |
Если задано значение false , удаляет небезопасный код кодирования UTF-7. Дополнительные сведения см. в разделе Пути к коду в кодировке UTF-7 устарели. |
EventSourceSupport |
Если задано значение false , удаляет код и логику, связанные с EventSource. |
HttpActivityPropagationSupport |
Если задано значениеfalse , удаляет код, связанный с поддержкой диагностикаSystem.Net.Http. |
InvariantGlobalization |
Если задано значение, удаляет код и данные, относящиеся true к глобализации. Дополнительные сведения см. в разделе Инвариантный режим. |
MetadataUpdaterSupport |
Если задано значение false , удаляет логику обновления метаданных, связанную с горячей перезагрузкой. |
MetricsSupport |
Если задано значение false , удаляет поддержку System.Diagnostics.Metrics инструментирования. |
StackTraceSupport (.NET 8+) |
Если задано значение false , удаляет поддержку создания трассировок стека (например, Environment.StackTrace или Exception.ToString) среды выполнения. Объем данных, удаленных из строк трассировки стека, может зависеть от других параметров развертывания. Этот параметр не влияет на трассировки стека, созданные отладчиками. |
UseNativeHttpHandler |
Если задано значение true , используется реализация HttpMessageHandler платформы по умолчанию для Android и iOS и удаляет управляемую реализацию. |
UseSizeOptimizedLinq (.NET 10+) |
Если задано значение true , удаляет некоторые оптимизации пропускной способности в LINQ, которые негативно влияют на размер приложения. По true умолчанию с PublishAot ; возможно, не удается скомпилировать в собственном коде некоторые приложения с заданным свойством false . |
UseSystemResourceKeys |
Если задано значение true , удаляет сообщения об исключениях для System.* сборок. При возникновении исключения из System.* сборки сообщение является упрощенным идентификатором ресурса вместо полного сообщения. |
XmlResolverIsNetworkingEnabledByDefault (.NET 8+) |
Если задано значение false , удаляет поддержку разрешения URL-адресов, отличных от файлов, в System.Xml. Поддерживается только разрешение файловой системы. |
Эти свойства вызывают обрезку связанного кода, а также отключение функций с помощью файла среды выполнения . Дополнительные сведения об этих свойствах, включая соответствующие параметры runtimeconfig, см. в разделе, посвященном переключению функций. Некоторые пакеты SDK могут иметь значения по умолчанию для этих свойств.
Функции платформы, отключенные при обрезке
Следующие функции несовместимы с обрезкой, так как для них требуется код, на который не ссылается статически. Эти функции отключены по умолчанию в обрезаемых приложениях.
Предупреждение
Включите эти функции на свой собственный риск. Они, скорее всего, нарушат работу обрезанных приложений, которые не доработаны, чтобы сохранить код, на который имеются динамические ссылки.
<BuiltInComInteropSupport>
Встроенная поддержка COM отключена.
<CustomResourceTypesSupport>
Использование пользовательских типов ресурсов не поддерживается. Пути кода ResourceManager, использующие отражение для пользовательских типов ресурсов, обрезаются.
<EnableCppCLIHostActivation>
Активация узла C++/CLI отключена.
<EnableUnsafeBinaryFormatterInDesigntimeLicenseContextSerialization>
Использование DesigntimeLicenseContextSerializer сериализации
BinaryFormatter
отключено.<StartupHookSupport>
Выполнение кода до
Main
DOTNET_STARTUP_HOOKS
этого не поддерживается. Дополнительные сведения см. в разделе Перехватчик запуска узла.