Обновление версии среды выполнения автономного развертывания
Автономные развертывания приложений в .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
, выберите один из следующих вариантов:
Выберите поведение зависимости от платформы. Если приложение зависит от платформы, это поведение по умолчанию. Если приложение является автономным и может использовать локальную среду выполнения 2.1.0 без исправлений, установите для параметра
TargetLatestRuntimePatch
значениеfalse
в файле проекта.Выберите автономное поведение. Если приложение автономное, это поведение по умолчанию. Если приложение зависит от платформы и требует установки последнего исправления, установите для параметра
TargetLatestRuntimePatch
значениеtrue
в файле проекта.Вы можете явным образом контролировать версию среды выполнения платформы, установив для параметра
RuntimeFrameworkVersion
конкретную версию исправления в файле проекта.