Microsoft.AspNetCore.App for ASP.NET CoreMicrosoft.AspNetCore.App for ASP.NET Core
本文内容
ASP.NET Core 共享框架 (Microsoft.AspNetCore.App
) 包含由 Microsoft 开发和支持的程序集。当安装 NET Core 3.0 或更高版本 SDK 时,安装 Microsoft.AspNetCore.App
。共享框架 是安装在计算机上并包括运行时组件和目标包的一组程序集( .dll 文件)。有关详细信息,请参阅共享框架。
- 面向
Microsoft.NET.Sdk.Web
SDK 的项目隐式引用Microsoft.AspNetCore.App
框架。
对于这些项目,不需要其他引用:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
...
</Project>
ASP.NET Core 共享框架:
- 不包括第三方依赖项。
- 包括 ASP.NET Core 团队支持的所有包。
此功能需要面向 .NET Core 2.x 的 ASP.NET Core 2.x。
适用于 ASP.NET Core 的 Microsoft.AspNetCore.App元包:
- 不包括第三方依赖项,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 的默认项目模板使用此包。建议面向 ASP.NET Core 2.x 和 Entity Framework Core 2.x 的应用程序使用 Microsoft.AspNetCore.App
包。
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
元包时,应用程序不部署所引用的 ASP.NET Core NuGet 包中的任何资产 — .NET Core 共享框架包含这些资产 。共享框架中的资产已经过预编译,以便缩短应用程序启动时间。有关详细信息,请参阅共享框架。
以下项目文件为 ASP.NET Core 引用 Microsoft.AspNetCore.App
元包,,它表示一种典型的 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 指定的隐式版本,而不是在包引用上显式设置版本号。如果对这种方法有任何疑问,可以在 Microsoft.AspNetCore.App 隐式版本讨论上发表 GitHub 评论。
对于便携式应用,隐式版本设置为 major.minor.0
。共享框架前滚机制将在安装的共享框架的最新兼容版本上运行应用。为确保在开发、测试和生产中使用相同的版本,请确保在所有环境中都安装相同版本的共享框架。对于独立应用,将隐式版本号设置为在已安装的 SDK 中捆绑的共享框架的 major.minor.patch
。
在 Microsoft.AspNetCore.App
引用上指定版本号,不能保证将选择该共享框架版本 。例如,假设指定的版本是“2.2.1”,但安装的是“2.2.3”。这种情况下,应用将使用"2.2.3"。不过不建议这样做,你可以禁用前滚(修补程序和/或次要版本)。有关 dotnet 主机前滚以及如何配置其行为的详细信息,请参阅 dotnet 主机前滚。
<Project Sdk
必须设置为 Microsoft.NET.Sdk.Web
以使用隐式版本 Microsoft.AspNetCore.App
。使用 <Project Sdk="Microsoft.NET.Sdk">
(不带尾随 .Web
)时:
- 生成以下警告:
警告 NU1604:项目依赖项 Microsoft.AspNetCore.App 不包括包含下限。请在依赖项版本中包括下限,以确保一致的还原结果。
- 这是 .NET Core 2.1 SDK 的一个已知问题。
更新 ASP.NET CoreUpdate ASP.NET Core
Microsoft.AspNetCore.App
元包不是从 NuGet 更新的传统包。类似于 Microsoft.NETCore.App
,Microsoft.AspNetCore.App
表示共享运行时,它具有在 NuGet 之外处理的特殊版本控制语义。有关详细信息,请参阅包、元包和框架。
更新 ASP.NET Core:
- 在开发计算机和生成服务器上:下载并安装 .NET Core SDK。
- 在部署服务器上:下载并安装 .NET Core 运行时。
在应用程序重启时,应用程序将前滚到最新安装的版本。无需更新项目文件中的 Microsoft.AspNetCore.App
版本号。有关详细信息,请参阅依赖于框架的应用会前滚。
如果应用程序之前使用 Microsoft.AspNetCore.All
,请参阅从 Microsoft.AspNetCore.All 迁移到 Microsoft.AspNetCore.App。