ASP.NET Core 2.0 的 Microsoft.AspNetCore.All 元包Microsoft.AspNetCore.All metapackage for ASP.NET Core 2.0

本文内容

ASP.NET Core 3.0 及更高版本中不包含 Microsoft.AspNetCore.All 元包。有关详细信息,请参阅此 GitHub 问题

备注

对于面向 ASP.NET Core 2.1 及更高版本的应用程序,建议使用 Microsoft.AspNetCore.App 元包而不是此包。请参阅本文中的从 Microsoft.AspNetCore.All 迁移到 Microsoft.AspNetCore.App

此功能需要面向 .NET Core 2.x 的 ASP.NET Core 2.x。

Microsoft.AspNetCore.All 是引用共享框架的元包。 共享框架是不在应用的文件夹中的一组程序集(.dll 文件)。必须将共享框架安装在计算机上才能运行应用。有关详细信息,请参阅共享框架

Microsoft.AspNetCore.All 引用的共享框架包括:

  • ASP.NET Core 团队支持的所有包。
  • Entity Framework Core 支持的所有包。
  • ASP.NET Core 和 Entity Framework Core 使用的内部和第三方依赖关系。

Microsoft.AspNetCore.All 包中包含了 ASP.NET Core 2.x 和 Entity Framework Core 2.x 的所有功能。定目标到 ASP.NET Core 2.0 的默认项目模板使用此包。

Microsoft.AspNetCore.All 元包的版本号表示最低 ASP.NET Core 版本和 Entity Framework Core 版本。

以下 .csproj 文件引用了 ASP.NET Core 的 Microsoft.AspNetCore.All 元包 :

  1. <Project Sdk="Microsoft.NET.Sdk.Web">
  2. <PropertyGroup>
  3. <TargetFramework>netcoreapp2.0</TargetFramework>
  4. </PropertyGroup>
  5. <ItemGroup>
  6. <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.9" />
  7. </ItemGroup>
  8. </Project>

隐式版本控制Implicit versioning

在 ASP.NET Core 2.1 或更高版本中,可以指定 Microsoft.AspNetCore.All 包引用但不指定版本。如果未指定版本,SDK 会指定隐式版本 (Microsoft.NET.Sdk.Web)。建议使用 SDK 指定的隐式版本,而不是在包引用上显式设置版本号。如果对这种方法有任何疑问,可以在 Microsoft.AspNetCore.App 隐式版本讨论上发表 GitHub 评论。

对于便携式应用,隐式版本设置为 major.minor.0共享框架前滚机制在安装的共享框架的最新兼容版本上运行应用。为确保在开发、测试和生产中使用相同的版本,请确保在所有环境中都安装相同版本的共享框架。对于独立应用,将隐式版本号设置为在已安装的 SDK 中捆绑的共享框架的 major.minor.patch

Microsoft.AspNetCore.All 包引用上指定版本号,不能保证会选择该共享框架版本 。例如,假设指定的版本是“2.1.1”,但安装的是“2.1.3”。这种情况下,应用将使用"2.1.3"。不过不建议这样做,你可以禁用前滚(修补程序和/或次要版本)。有关 dotnet 主机前滚以及如何配置其行为的详细信息,请参阅 dotnet 主机前滚

必须在项目文件中将项目的 SDK 设置为 Microsoft.NET.Sdk.Web,这样才能使用隐式版本的 Microsoft.AspNetCore.All指定 Microsoft.NET.Sdk SDK(项目文件顶部的 <Project Sdk="Microsoft.NET.Sdk">)时,将生成以下警告:

警告 NU1604:项目依赖项 Microsoft.AspNetCore.All 不包括包含下限。* 请在依赖项版本中包括下限,以确保一致的还原结果。

这是 .NET Core 2.1 SDK 的一个已知问题,将在 .NET Core 2.2 SDK 中修复。

从 Microsoft.AspNetCore.All 迁移到 Microsoft.AspNetCore.AppMigrating from Microsoft.AspNetCore.All to Microsoft.AspNetCore.App

Microsoft.AspNetCore.All 包中包含以下包,而 Microsoft.AspNetCore.App 包中不包含以下包。

  • Microsoft.AspNetCore.ApplicationInsights.HostingStartup
  • Microsoft.AspNetCore.AzureAppServices.HostingStartup
  • Microsoft.AspNetCore.AzureAppServicesIntegration
  • Microsoft.AspNetCore.DataProtection.AzureKeyVault
  • Microsoft.AspNetCore.DataProtection.AzureStorage
  • Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv
  • Microsoft.AspNetCore.SignalR.Redis
  • Microsoft.Data.Sqlite
  • Microsoft.Data.Sqlite.Core
  • Microsoft.EntityFrameworkCore.Sqlite
  • Microsoft.EntityFrameworkCore.Sqlite.Core
  • Microsoft.Extensions.Caching.Redis
  • Microsoft.Extensions.Configuration.AzureKeyVault
  • Microsoft.Extensions.Logging.AzureAppServices
  • Microsoft.VisualStudio.Web.BrowserLink

要从 Microsoft.AspNetCore.All 移到 Microsoft.AspNetCore.App,如果应用使用上述包或由这些包引入的包中的任何 API,请在项目中添加对这些包的引用。

不会隐式包含非 Microsoft.AspNetCore.App 依赖项的上述包的任何依赖项。例如:

  • StackExchange.Redis 作为 Microsoft.Extensions.Caching.Redis 的依赖项
  • Microsoft.ApplicationInsights 作为 Microsoft.AspNetCore.ApplicationInsights.HostingStartup 的依赖项

更新 ASP.NET Core 2.1Update ASP.NET Core 2.1

建议迁移到 2.1 及更高版本的 Microsoft.AspNetCore.App 元数据包。要继续使用 Microsoft.AspNetCore.All 元数据包并确保部署最新的补丁版本,请执行以下操作:

  • 在开发计算机和生成服务器上:安装最新的 .NET Core SDK
  • 在部署服务器上:安装最新的 .NET Core 运行时。在应用程序重启时,应用将前滚到最新安装的版本。