Метапакет Microsoft.AspNetCore.App для ASP.NET Core
Примечание.
Это не последняя версия этой статьи. В текущем выпуске см . версию .NET 9 этой статьи.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в статье о политике поддержки .NET и .NET Core. В текущем выпуске см . версию .NET 8 этой статьи.
Внимание
Эта информация относится к предварительному выпуску продукта, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
В текущем выпуске см . версию .NET 9 этой статьи.
Общая платформа ASP.NET Core (Microsoft.AspNetCore.App
) содержит сборки, разработанные и поддерживаемые корпорацией Майкрософт. Microsoft.AspNetCore.App
устанавливается при установке пакета SDK для .NET Core 3.0 или более поздней версии. Общая платформа — это набор сборок (DLL-файлы), которые установлены на компьютере, содержащий компонент среды выполнения и целевой пакет. Дополнительную информацию см. в этой публикации об общей платформе.
- Проекты, предназначенные для пакета SDK
Microsoft.NET.Sdk.Web
, неявно ссылаются на платформуMicrosoft.AspNetCore.App
.
Для этих проектов не требуются дополнительные ссылки:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
...
</Project>
Общая платформа ASP.NET Core:
- Не содержит зависимости сторонних разработчиков.
- Содержит все пакеты, поддерживаемые командой ASP.NET Core.
Для этой функции нужен ASP.NET Core 2.x, нацеленный на .NET Core 2.x.
Метапакет Microsoft.AspNetCore.App для ASP.NET Core
- Не включает сторонних зависимостей, за исключением Json.NET, Remotion.Linq и IX-Async. Эти зависимости необходимы для обеспечения работы основных возможностей платформ.
- Включает все поддерживаемые командой ASP.NET Core пакеты, за исключением тех, которые содержат зависимости сторонних разработчиков (кроме указанных выше).
- Включает все поддерживаемые командой Entity Framework Core пакеты, за исключением тех, которые содержат зависимости сторонних разработчиков (кроме указанных выше).
В пакет Microsoft.AspNetCore.App
входят все компоненты ASP.NET Core 2.x и Entity Framework Core 2.x. Этот пакет по умолчанию используется для шаблонов проектов, предназначенных для ASP.NET Core 2.x. Для использования пакета Microsoft.AspNetCore.App
рекомендуется использовать приложения, предназначенные для ASP.NET Core 2.x и Entity Framework Core 2.x.
Номер версии метапакета Microsoft.AspNetCore.App
соответствует минимальной версии ASP.NET Core и версии Entity Framework Core.
Метапакет Microsoft.AspNetCore.App
предоставляет возможность ограничения по версиям, которые защищают приложение:
- Если включен пакет, который имеет транзитивную (не прямую) зависимость от пакета в
Microsoft.AspNetCore.App
, и эти номера версий не совпадают, NuGet выдаст ошибку. - Другие пакеты, добавленные в ваше приложение не могут изменять версию пакетов, включенных в
Microsoft.AspNetCore.App
. - Согласованность версий гарантирует надежности работы. Метапакет
Microsoft.AspNetCore.App
был разработан, чтобы предотвратить использование непроверенных сочетаний версий связанных компонентов в одном приложении.
Приложения, использующие метапакет Microsoft.AspNetCore.App
, автоматически получают все преимущества общей платформы ASP.NET Core. При использовании метапакета Microsoft.AspNetCore.App
с приложением не развертываются никакие ресурсы из указанных по ссылке пакетов NuGet ASP.NET Core: общая платформа ASP.NET Core уже содержит эти ресурсы. Для сокращения времени запуска приложения ресурсы в общей платформе подвергаются предварительной компиляции. Дополнительную информацию см. в этой публикации об общей платформе.
Следующий файл проекта ссылается на метапакет Microsoft.AspNetCore.App
для ASP.NET Core и представляет стандартный шаблон ASP.NET Core 2.2:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
</Project>
Предыдущая разметка представляет типичный шаблон ASP.NET Core 2.x. Он не задает номер версии в ссылке на пакет Microsoft.AspNetCore.App
. Если версия не указана, она задается неявно пакетом SDK, то есть пакетом Microsoft.NET.Sdk.Web
. Рекомендуется использовать неявное указание версии через пакет SDK, а не задавать номер версии явно в ссылке на пакет. Если у вас возникли вопросы по этому подходу, оставьте комментарий на GitHub в обсуждении неявного указания версий Microsoft.AspNetCore.App.
Для переносимых приложений при неявном указании версии устанавливается значение major.minor.0
. Механизм выбора последней общей платформы будет запускать приложение на последней совместимой версии среди установленных общих платформ. Чтобы гарантировать, что используется одна и та же версия при разработке, тестировании и эксплуатации, убедитесь, что установлена одинаковая версия общей платформы во всех средах. Для автономных приложений неявный номер версии общей платформы, включенной в установленный пакет SDK, устанавливается в значение major.minor.patch
.
Указание номера версии метапакета Microsoft.AspNetCore.App
в ссылке на него не гарантирует, что будет выбрана эта версия общей платформы. Например, пусть указана версия 2.2.1, но установлена версия 2.2.3. В этом случае приложение будет использовать версию 2.2.3. Хотя это не рекомендуется, можно отключить функцию выбора последней версии (для исправлений и (или) вспомогательных версий). Дополнительную информацию см. в статье о выборе последней версии на узле .NET.
Для <Project Sdk
нужно установить значение Microsoft.NET.Sdk.Web
, чтобы использовать неявную версию Microsoft.AspNetCore.App
. При использовании <Project Sdk="Microsoft.NET.Sdk">
(без .Web
в конце) происходит следующее:
Создается такое предупреждение:
Предупреждение NU1604. Зависимость проекта Microsoft.AspNetCore.App не содержит включенную нижнюю границу. Включите нижнюю границу в версию зависимости, чтобы гарантировать согласованные результаты восстановления.
Это известная проблема с пакетом SDK для NET Core 2.1.
Обновление ASP.NET Core
Метапакет Microsoft.AspNetCore.App
не является традиционным пакетом, который обновляется через NuGet. Аналогично Microsoft.NETCore.App
, метапакет Microsoft.AspNetCore.App
представляет собой общую среду выполнения, которая имеет особую семантику номеров версий, обрабатываемую за пределами NuGet. Дополнительную информацию см. в статье Пакеты, метапакеты и платформы.
Чтобы обновить ASP.NET Core, выполните следующие действия:
- На компьютерах разработчиков и серверах сборки: скачайте и установите пакет SDK для .NET Core.
- На серверах развертывания: скачайте и установите среду выполнения .NET Core.
Приложения будут обновлены до последней установленной версии при перезапуске приложения. Номер версии Microsoft.AspNetCore.App
в файле проекта обновлять не нужно. Дополнительные сведения см. в разделе Накат платформозависимых приложений.
Если вы уже использовали Microsoft.AspNetCore.All
в своем приложении, см. раздел Переход от Microsoft.AspNetCore.All к Microsoft.AspNetCore.App.
ASP.NET Core