Обрезка автономных развертываний и исполняемых файлов

Модель развертывания с зависимостью от платформы была наиболее успешной моделью развертывания с момента запуска .NET. При таком сценарии разработчик приложения связывает только приложение и сторонние сборки, ожидая, что среды выполнения .NET и библиотеки будут доступны на клиентском компьютере. Эта модель развертывания продолжает оставаться доминирующей в последней версии .NET, однако есть некоторые сценарии, в которых модель, зависящая от платформы, является не лучшим выбором. Альтернативой является публикация автономного приложения, в котором среда выполнения .NET и библиотеки среды выполнения объединены вместе с приложением и сторонними сборками.

Специализированная версия автономной модели развертывания под названием "trim-self-contained" оптимизирована для уменьшения размера развертывания. Минимизация размера развертывания является критически важным требованием для некоторых сценариев на стороне клиента, например приложений Blazor. В зависимости от сложности приложения указывается только подмножество сборок платформы, а для запуска приложения требуется подмножество кода в каждой сборке. Неиспользуемые компоненты библиотеки не нужны, поэтому их можно удалить из упакованного приложения.

Однако существует риск того, что анализ времени сборки приложения может привести к сбоям во время выполнения, из-за того, что не удается надежно проанализировать различные проблемные шаблоны кода (в значительной степени сосредоточено на использовании отражения). Чтобы устранить такие проблемы, создаются предупреждения всякий раз, когда не удается полностью проанализировать шаблон кода. Для получения сведений о значении предупреждений об обрезке и способах их устранения см. раздел "Исправление предупреждений обрезки". Сведения о том, как работает обрезка и почему некоторые шаблоны вызывают предупреждения, см. в разделе "Общие сведения о анализе обрезки".

Примечание.

  • Функция обрезки полностью поддерживается в .NET 6 и более поздних версиях. В .NET Core 3.1 и .NET 5 обрезка была экспериментальной функцией.
  • Тримминг доступен только для приложений, публикуемых в автономном режиме.

Компоненты, вызывающие проблемы при обрезке

Предупреждение

Не все типы проектов можно обрезать. Для получения дополнительной информации см. Известные проблемы совместимости с обрезкой.

Любой код, который вызывает проблемы при анализе во время компиляции, плохо подходит для обрезки. Некоторые шаблоны программирования, которые вызывают типичные проблемы при использовании в приложении, возникают из-за использования неограниченных отражений и внешних зависимостей, не доступных во время компиляции. Примером неограниченного отражения является использование устаревшего сериализатора, такого как XML-сериализация, а примером невидимых внешних зависимостей служит встроенный COM. Сведения об устранении предупреждений об обрезке в приложении см. в разделе "Исправление предупреждений обрезки", а чтобы обеспечить совместимость библиотек .NET с обрезкой, см. в разделе "Подготовка библиотек .NET для обрезки".

Включить обрезку

  1. Добавьте <PublishTrimmed>true</PublishTrimmed> в файл проекта.

    Это свойство создает обрезаемое приложение для автономной публикации. Также будут отключены функции, несовместимые с trim, а во время сборки будут отображаться предупреждения о совместимости trim.

    <PropertyGroup>
        <PublishTrimmed>true</PublishTrimmed>
    </PropertyGroup>
    
  2. Затем опубликуйте приложение с помощью команды 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

  1. В обозревателе решенийщелкните правой кнопкой мыши проект, который вы хотите опубликовать, и выберите Свойства.

    в обозревателе решений меню с щелчком правой кнопкой мыши, в котором выделен параметр

  2. Выберите Сборка>Опубликовать.

    на странице публикации в Visual Studio с параметром Publish Trimmed.

  3. Выберите Опубликовать обрезанное, чтобы опубликовать приложение в обрезанном виде.

    страница публикации Visual Studio с параметром 'Publish Trimmed', выбранным.

Дополнительные сведения см. в обзоре публикации приложений .NET.

Дальнейшие шаги

После включения обрезки, во время сборки могут возникнуть предупреждения об обрезке. Выполните следующие руководства, чтобы понять и устранить их:

См. также