Обрезка автономных развертываний и исполняемых файлов
Модель развертывания с зависимостью от платформы была наиболее успешной моделью развертывания с момента запуска .NET. При таком сценарии разработчик приложения связывает только приложение и сторонние сборки, ожидая, что среды выполнения .NET и библиотеки будут доступны на клиентском компьютере. Эта модель развертывания продолжает оставаться доминирующей в последней версии .NET, однако есть некоторые сценарии, в которых модель, зависящая от платформы, является не лучшим выбором. Альтернативой является публикация автономного приложения, в котором среды выполнения библиотеки и .NET объединены вместе с приложением и сторонними сборками.
Автономная модель развертывания — это специализированная версия автономной модели развертывания, оптимизированная для уменьшения размера развертывания. Минимизация размера развертывания является критически важным требованием для некоторых сценариев на стороне клиента, например приложений Blazor. В зависимости от сложности приложения указывается только подмножество сборок платформы, а для запуска приложения требуется подмножество кода в каждой сборке. Неиспользуемые компоненты библиотеки не нужны, поэтому их можно удалить из упакованного приложения.
Однако существует риск того, что анализ приложения во время компиляции может привести к сбоям во время выполнения, поскольку некоторые сложные шаблоны кода (в основном с использованием отражений) невозможно надежно выявлять и анализировать. Чтобы устранить такие проблемы, создаются предупреждения всякий раз, когда не удается полностью проанализировать шаблон кода. Сведения о значении предупреждений об обрезке и способах их устранения см. в статье Общие сведения о предупреждениях об обрезке.
Примечание.
- Обрезка полностью поддерживается в .NET 6 и более поздних версиях. В .NET Core 3.1 и .NET 5 обрезка была экспериментальной функцией.
- Она доступна только для автономно публикуемых приложений.
Компоненты, вызывающие проблемы при обрезке
Предупреждение
Не все типы проекта можно обрезать. Дополнительные сведения см. в статье Известные несовместимости обрезки.
Любой код, который вызывает проблемы при анализе во время компиляции, плохо подходит для обрезки. Некоторые шаблоны программирования, которые вызывают типичные проблемы при использовании в приложении, возникают из-за использования неограниченных отражений и внешних зависимостей, не доступных во время компиляции. Пример несвязанного отражения является устаревшим сериализатором, например сериализацией XML, и примером невидимых внешних зависимостей является встроенный COM. Чтобы устранить предупреждения об обрезке в приложении, воспользуйтесь статьей Общие сведения о предупреждениях об обрезке, а чтобы сделать библиотеку совместимой с обрезкой, изучите статью Подготовка библиотек .NET для обрезки.
Включение обрезки
Добавьте
<PublishTrimmed>true</PublishTrimmed>
в файл проекта.Это свойство создает обрезаемое приложение для автономной публикации. Также будут отключены функции, несовместимые с обрезкой, а во время сборки будут отображаться предупреждения о совместимости.
<PropertyGroup> <PublishTrimmed>true</PublishTrimmed> </PropertyGroup>
Затем опубликуйте приложение с помощью команды dotnet publish или Visual Studio.
Публикация с помощью CLI
В следующем примере приложение для Windows публикуется как обрезанное автономное приложение.
dotnet publish -r win-x64
Обрезка поддерживается только для автономных приложений.
<PublishTrimmed>
необходимо задать в файле проекта, чтобы несовместимые с обрезкой функции были отключены во время dotnet build
. Однако этот параметр также можно задать в качестве аргумента dotnet publish
:
dotnet publish -r win-x64 -p:PublishTrimmed=true
Дополнительные сведения см. в статье Публикация приложений .NET с помощью интерфейса командной строки.
Публикация с помощью Visual Studio
В Обозреватель решений щелкните правой кнопкой мыши проект, который вы хотите опубликовать, и выберите "Опубликовать".
Если у вас еще нет профиля публикации, следуйте инструкциям по его созданию и выберите Папка в качестве типа целевого объекта.
Выберите "Дополнительные действия" ">Изменить".
В диалоговом окне Параметры профиля задайте следующие параметры.
- Параметру Режим развертывания задайте значение Автономное.
- В качестве значения параметра Целевая среда выполнения укажите платформу, на которую будет выполнена публикация.
- Выберите " Обрезать неиспользуемый код".
Нажмите кнопку Сохранить, чтобы сохранить параметры и вернуться в диалоговое окно Публикация.
Чтобы опубликовать обрезанное приложение, нажмите кнопку Опубликовать.
Дополнительные сведения см. в статье Публикация приложений .NET Core с помощью Visual Studio.