Поделиться через


Переход на новую версию среды выполнения автономного развертывания

Развертывания автономных приложений .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 операции, а не publishbuild. При вызове publishбудет выбрана последняя версия исправления. При вызове publish с аргументом --no-restore вы можете не получить нужную версию исправления, так как предыдущее restore возможно не было выполнено с новой автономной политикой публикации приложений. В этом случае ошибка сборки создается с текстом, аналогичным следующему:

"Проект был восстановлен с помощью Microsoft.NETCore.App версии 2.0.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. Предпочитайте автономное поведение. Если приложение самодостаточено, это поведение по умолчанию. Если приложение зависит от платформы и требует последнего установленного исправления, установите значение TargetLatestRuntimePatchtrue в файле проекта.

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