Обучение
Модуль
Publish an ASP.NET Core app - Training
Learn how to publish an ASP.NET Core app for deployment to a web server or cloud service.
Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
В этой статье описаны политики, используемые средствами .NET, пакетом SDK и средой выполнения для выбора версии. Эти политики обеспечивают баланс между запуском приложений с помощью указанных версий и упрощенным процессом обновления компьютеров разработчика и конечного пользователя. Эти политики включают:
Ситуации выбора версии:
В остальной части этой статьи рассматриваются эти четыре сценария.
Команды пакета SDK включают dotnet new
и dotnet run
. В .NET CLI нужно выбрать версию пакета SDK для каждой команды dotnet
. В CLI используется пакет SDK последней версии, установленный на компьютере по умолчанию, даже если:
Вы можете воспользоваться последними преимуществами и улучшениями пакета SDK при работе с более ранними версиями среды выполнения .NET. Вы можете выбрать несколько целевых версий среды выполнения .NET, используя одинаковые инструменты SDK.
В редких случаях вам потребуется использовать более раннюю версию пакета SDK. Укажите эту версию в файле global.json. Политика использования последней версии означает, что вам придется использовать файл global.json, чтобы указать версию пакета SDK для .NET, если она раньше последней установленной версии.
Файл global.json можно поместить в любое место в иерархии файлов. Вы сами выбираете, на какие проекты распространяется конкретный файл global.json, когда размещаете его в файловой системе. Интерфейс командной строки .NET выполняет поиск global.json-файла итеративно, перемещая путь вверх от текущего рабочего каталога (который не обязательно совпадает с каталогом проекта). Первый найденный файл global.json задает используемую версию. Если эта версия пакета SDK установлена, она будет использоваться. Если пакет SDK, указанный в global.json, не найден, то .NET CLI выбирает совместимый пакет SDK с помощью правил сопоставления. Если такой пакет не удается обнаружить, происходит сбой.
В следующем примере приводится синтаксис файла global.json.
{
"sdk": {
"version": "5.0.0"
}
}
Процесс выбора версии пакета SDK выглядит следующим образом:
dotnet
ищет файл global.json последовательно, двигаясь вверх от текущего рабочего каталога.dotnet
использует пакет SDK, указанный в первом найденном файле global.json.dotnet
использует последнюю установленную версию пакета SDK, если файл global.json не найден.Дополнительные сведения о выборе версии пакета SDK см. в разделах Правила сопоставления и rollForward в обзоре global.json.
Вы создаете проект для API, определенных в моникер целевой платформы (TFM). Вы указываете целевую платформу в файле проекта. Укажите элемент TargetFramework
в файле проекта, как показано в следующем примере:
<TargetFramework>net8.0</TargetFramework>
Проект можно создать на основе нескольких TFM. Обычно несколько целевых платформ указываются для библиотек, но с приложениями это тоже возможно. Укажите свойство TargetFrameworks
(множественное число от TargetFramework
). Целевые платформы разделяются точкой с запятой, как показано в следующем примере:
<TargetFrameworks>net8.0;net47</TargetFrameworks>
Данный пакет SDK поддерживает фиксированный набор платформ, вплоть до целевой платформы среды выполнения, с которой он поставляется. Например, пакет SDK для .NET 8 включает среду выполнения .NET 8, которая является реализацией целевой net8.0
платформы. Пакет SDK для .NET 8 поддерживает net7.0
, net6.0
но net5.0
не net9.0
(или выше). Пакет SDK для .NET 9 устанавливается для net9.0
сборки.
С помощью .NET Standard можно было ориентироваться на поверхность API, совместно используемую различными реализациями .NET. Начиная с выпуска .NET 5, который является стандартом API сам по себе, .NET Standard нужен только для одного сценария: .NET Standard можно использовать, если вы хотите ориентироваться на .NET и .NET Framework. В .NET 5 реализованы все версии .NET Standard.
Дополнительные сведения см. в статье .NET 5 и .NET Standard.
Если вы запускаете приложение из источника с dotnet run
из зависящего от платформы развертывания с использованием dotnet myapp.dll
или из зависящего от платформы исполняемого файла с использованиемmyapp.exe
, исполняемый файл dotnet
будет узлом для приложения.
Узел выбирает версию с последними исправлениями, установленную на компьютере. Например, если вы указали net5.0
в файле проекта, а 5.0.2
является последней установленной версией среды выполнения .NET, будет использоваться среда выполнения 5.0.2
.
Если допустимая версия 5.0.*
не найдена, используется новая версия 5.*
. Например, если вы указали net5.0
и только 5.1.0
установлена, приложение будет работать в среде выполнения 5.1.0
. Это поведение называется дополнительным перекатом версии. Более низкие версии также не будут рассматриваться. Если допустимая среда выполнения не установлена, приложение не будет работать.
Несколько примеров для демонстрации такого поведения, если вы используете версию 5.0:
Накат до дополнительной версии имеет побочный эффект для конечных пользователей. Рассмотрим следующий сценарий:
Версии 5.0.3 и 5.1.0 могут вести себя по-разному, особенно в таких сценариях, как сериализация двоичных данных.
Перед переопределением поведения наката по умолчанию ознакомьтесь с уровнем совместимости среды выполнения .NET.
Поведение наката для приложения можно настроить четырьмя разными способами:
Настройка на уровне проекта с помощью свойства <RollForward>
:
<PropertyGroup>
<RollForward>LatestMinor</RollForward>
</PropertyGroup>
Файл *.runtimeconfig.json
.
Этот файл создается при компиляции приложения. Если свойство <RollForward>
было задано в проекте, оно воспроизводится в файле *.runtimeconfig.json
в качестве параметра rollForward
. Пользователи могут редактировать этот файл, чтобы изменить поведение приложения.
{
"runtimeOptions": {
"tfm": "net5.0",
"rollForward": "LatestMinor",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "5.0.0"
}
}
}
Свойство --roll-forward <value>
команды dotnet
.
При запуске приложения можно управлять поведением наката с помощью командной строки:
dotnet run --roll-forward LatestMinor
dotnet myapp.dll --roll-forward LatestMinor
myapp.exe --roll-forward LatestMinor
Переменная среды DOTNET_ROLL_FORWARD
.
Поведение наката задается в следующем порядке при запуске приложения: пронумерованные элементы более высокого уровня имеют приоритет над пронумерованными элементами более низкого уровня.
*.runtimeconfig.json
.DOTNET_ROLL_FORWARD
, переопределяющая предыдущую проверку.--roll-forward
, переданный в запущенное приложение, переопределяет все остальное.Для настройки поведения наката используйте одно из следующих значений:
значение | Описание |
---|---|
Minor |
Значение по умолчанию, если не указано. Накат до дополнительной версии со следующим по порядку возрастания номером, если запрошенная дополнительная версия отсутствует. Если запрошенная дополнительная версия присутствует, используется политика LatestPatch . |
Major |
Накат до следующей доступной основной версии или следующей дополнительной версии с наименьшим номером, если запрошенная дополнительная версия отсутствует. Если запрошенная дополнительная версия присутствует, используется политика Minor . |
LatestPatch |
Накат до версии с наибольшим номером исправления. Это значение отключает накат до дополнительных версий. |
LatestMinor |
Накат до дополнительной версии с наибольшим номером, даже если запрошенная дополнительная версия присутствует. |
LatestMajor |
Накат до основной версии с наибольшим номером и дополнительной версии с наибольшим номером, даже если запрошенная основная версия присутствует. |
Disable |
Не выполнять накат, привязывать только к указанной версии. Эта политика не рекомендуется для общего использования, поскольку отключает возможность наката до последних исправлений. Это значение рекомендуется использовать только для тестирования. |
Вы можете опубликовать приложение как автономный дистрибутив. При таком подходе среда выполнения .NET и библиотеки объединяются с вашим приложением. Автономные развертывания не зависят от среды выполнения. Выбор версии среды выполнения происходит во время публикации, а не запуска.
Событие восстановления, возникающее при публикации, выбирает последнюю версию исправления данного семейства среды выполнения. Например, dotnet publish
выберет .NET 5.0.3, если это последняя версия исправления семейства среды выполнения .NET 5. Целевая платформа (включая последние установленные обновления безопасности) упаковывается с приложением.
Если минимальная версия, указанная для приложения, не предоставляется, возникнет ошибка. dotnet publish
привязывает последнюю версию среды выполнения с исправлениями (без определенного семейства с основным и дополнительным номером версии). dotnet publish
не поддерживает семантику наката dotnet run
. Дополнительные сведения об исправлениях и автономных развертываниях см. в статье о выборе версии среды выполнения с исправлениями при развертывании приложений .NET.
Для автономных развертываний может потребоваться определенная версия исправления. Минимальную версию среды выполнения с исправлениями можно переопределить (выбрав более позднюю или раннюю версию) в файле проекта, как показано в следующем примере:
<PropertyGroup>
<RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
</PropertyGroup>
Элемент RuntimeFrameworkVersion
переопределяет политику версии по умолчанию. Для автономных развертываний RuntimeFrameworkVersion
указывает точную версию платформы среды выполнения. Для платформозависимых приложений RuntimeFrameworkVersion
указывает минимальную требуемую версию платформы среды выполнения.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Обучение
Модуль
Publish an ASP.NET Core app - Training
Learn how to publish an ASP.NET Core app for deployment to a web server or cloud service.