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 共享框架:
此功能需要面向 .NET Core 2.x 的 ASP.NET Core 2.x。
ASP.NET Core 的 Microsoft.AspNetCore.App 元包:
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 的一个已知问题。
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。