Обновление версии среды выполнения автономного развертывания

Автономные развертывания приложений в .NET Core включают библиотеки .NET Core и среду выполнения .NET Core. Начиная с пакета SDK для .NET Core 2.1 (версии 2.1.300), при автономном развертывании приложений публикуются последние исправления среды выполнения на компьютере. По умолчанию dotnet publish для автономного развертывания выбирает последнюю версию, установленную как часть пакета SDK на компьютере для публикации. Благодаря этому развернутое приложение запускается с исправлениями для системы безопасности (и другими исправлениями), доступными во время публикации publish. Приложение нужно опубликовать повторно для получения нового исправления. Чтобы создать автономное приложение, укажите параметр -r <RID> в команде dotnet publish или укажите идентификатор среды выполнения (RID) в файле проекта (CSPROJ или VBPROJ) или в командной строке.

Общие сведения об обновлении версии исправления

restore, build и publish — это команды dotnet, которые выполняются отдельно. Выбор среды выполнения является частью операции restore, а не publish или build. При вызове команды publish выбирается последняя версия исправлений. Команда publish с аргументом --no-restore может не дать нужную версию исправлений, если предварительно не выполнена команда restore с новой политикой публикации автономных приложений. В этом случае возникает ошибка сборки со следующим или подобным текстом:

"Проект был восстановлен с использованием Microsoft.NETCore.App версии 2.0.0, но с текущими параметрами будет использоваться версия 2.0.6. Чтобы устранить эту проблему, убедитесь, что для операции восстановления и для последующих операций, например сборки или публикации, используются одинаковые параметры. Обычно эта проблема возникает, если свойство RuntimeIdentifier задается во время сборки или публикации, а не во время восстановления".

Примечание.

restore и build могут выполняться неявно как часть другой команды, например publish. При неявном выполнении в рамках другой команды им предоставляется дополнительный контекст для создания подходящих артефактов. Когда вы выполняете операцию publish в среде выполнения (например, dotnet publish -r linux-x64), неявная команда restore восстанавливает пакеты для среды выполнения linux x64. Если вы явно вызываете методrestore, он не восстанавливает пакеты среды выполнения по умолчанию, поскольку у него нет этого контекста.

Как избежать восстановления во время публикации

Выполнение операции restore в рамках операции publish может привести к нежелательным результатам. Чтобы избежать операции restore во время операции publish при создании автономных приложений, выполните следующие действия:

  • Установите для свойства RuntimeIdentifiers разделенный точкой с запятой список идентификаторов RID для публикации.
  • Установите свойство TargetLatestRuntimePatch в значение true.

Аргумент no-restore в параметрах dotnet publish

Если вы хотите создать автономные приложения и приложения, зависящие от платформы, в одном файле проекта и использовать аргумент --no-restore с dotnet publish, выберите один из следующих вариантов:

  1. Выберите поведение зависимости от платформы. Если приложение зависит от платформы, это поведение по умолчанию. Если приложение является автономным и может использовать локальную среду выполнения 2.1.0 без исправлений, установите для параметра TargetLatestRuntimePatch значение false в файле проекта.

  2. Выберите автономное поведение. Если приложение автономное, это поведение по умолчанию. Если приложение зависит от платформы и требует установки последнего исправления, установите для параметра TargetLatestRuntimePatch значение true в файле проекта.

  3. Вы можете явным образом контролировать версию среды выполнения платформы, установив для параметра RuntimeFrameworkVersion конкретную версию исправления в файле проекта.