Метапакет Microsoft.AspNetCore.App для ASP.NET Core

Общая платформа 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, выполните следующие действия:

Приложения будут обновлены до последней установленной версии при перезапуске приложения. Номер версии Microsoft.AspNetCore.App в файле проекта обновлять не нужно. Дополнительные сведения см. в разделе Накат платформозависимых приложений.

Если вы уже использовали Microsoft.AspNetCore.All в своем приложении, см. раздел Переход от Microsoft.AspNetCore.All к Microsoft.AspNetCore.App.