乘风破浪,遇见最佳跨平台跨终端框架.Net Core/.Net生态 - 官方扩展集锦(Microsoft.AspNetCore on Nuget)
什么是Microsoft.AspNetCore
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/metapackage-app
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团队支持的所有包。
支持的目标框架
目标框架 | TFM |
---|---|
.NET 5 及更高版本(含.NET Core ) |
netcoreapp1.0 netcoreapp1.1 netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1 net5.0* net6.0* net7.0* |
.NET Standard |
netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6 netstandard2.0 netstandard2.1 |
.NET Framework |
net11 net20 net35 net40 net403 net45 net451 net452 net46 net461 net462 net47 net471 net472 net48 |
Windows 应用商店 |
netcore[netcore45] netcore45[win][win8] netcore451[win81] |
.NET Micro Framework |
netmf |
Silverlight |
sl4 sl5 |
Windows Phone |
wp[wp7] wp7 wp75 wp8 wp81 wpa81 |
通用Windows平台 |
uap[uap10.0] uap10.0[win10][netcore50] |
.NET 5及更高版本特定于OS的TFM
net5.0
、net6.0
和net7.0
TFM包括可在不同平台中使用的技术。
指定特定于OS的TFM使特定于操作系统的API可供你的应用(例如Windows窗体或iOS绑定)使用。特定于OS的TFM还会继承其基础TFM(例如net6.0 TFM)可用的每个API。
.NET 5引入了net5.0-windows
特定于OS的TFM,其中包括适用于WinForms、WPF和UWP API的特定于Windows的绑定。.NET 6引入了更多特定于OS的TFM。
若要使应用可跨不同平台移植,但仍有权访问特定于OS的API,你可以定位多个特定于OS的TFM,并使用#if预处理器指令围绕特定于OS的API调用增加平台防护。
使用以下准则确定在应用中使用哪种TFM:
可移植到多个平台的应用应面向基础TFM,例如net6.0
。这包括大多数库,但也包含ASP.NET Core和实体框架。
特定于平台的库应面向特定于平台的风格。例如,WinForms和WPF项目应面向net6.0-windows
。
跨平台应用模型(Xamarin Forms、ASP.NET Core)和网桥包(Xamarin Essentials)应至少面向基础TFM(例如net6.0),但也可以面向其他特定于平台的风格来支持更多的API或功能。
下表说明了.NET 5及更高版本TFM的兼容性
TFM | 可兼容对象 |
---|---|
net5.0 | net1..4(带有NU1701警告) netcoreapp1..3.1(引用WinForms或WPF时出现警告) netstandard1..2.1 |
net5.0-windows | netcoreapp1..3.1(以及从net5.0继承的所有其他内容) |
net6.0 | (后续版本的net5.0) |
net6.0-android | xamarin.android(以及从net6.0继承的所有其他内容) |
net6.0-ios | xamarin.ios(以及从net6.0继承的所有其他内容) |
net6.0-maccatalyst | xamarin.ios(以及从net6.0继承的所有其他内容) |
net6.0-macos | xamarin.mac(以及从net6.0继承的所有其他内容) |
net6.0-tvos | xamarin.tvos(以及从net6.0继承的所有其他内容) |
net6.0-windows | (后续版本的net5.0-windows) |
net7.0 | (后续版本的net6.0) |
net7.0-android | (后续版本的net6.0-android) |
net7.0-ios | (后续版本的net6.0-ios) |
net7.0-maccatalyst | (后续版本的net6.0-maccatalyst) |
net7.0-macos | (后续版本的net6.0-macos) |
net7.0-tvos | (后续版本的net6.0-tvos) |
net7.0-windows | (后续版本的net6.0-windows) |
使用ASP.NET Core共享框架
随着.NET Core 3.0发布,许多ASP.NET Core程序集不再作为包发布到NuGet。而是改为将这些程序集包含在通过.NET Core SDK
和运行时安装程序安装的Microsoft.AspNetCore.App
共享框架中。
自.NET Core 3.0
起,使用Microsoft.NET.Sdk.Web
MSBuild SDK的项目隐式引用此共享框架。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
...
</Project>
使用Microsoft.NET.Sdk
或Microsoft.NET.Sdk.Razor
SDK的项目必须引用ASP.NET Core
,才能使用共享框架中的ASP.NET Core API
。
若要引用ASP.NET Core,请将以下<FrameworkReference>
元素添加到项目文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
</Project>
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
...
</Project>
从ASP.NET Core 2.2升级到ASP.NET Core 3.0
不会为ASP.NET Core 3.0生成大量NuGet包。应从项目文件中删除此类包引用。
考虑以下适用于ASP.NET Core 2.2 Web应用的项目文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App"/>
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
</ItemGroup>
</Project>
针对ASP.NET Core 3.0更新后的项目文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
</Project>
更新后的ASP.NET Core 3.0项目文件:
- 在
<PropertyGroup>
中:- 将
TFM
更新为netcoreapp3.0
- 删除了
<AspNetCoreHostingModel>
元素。
- 将
- 在
<ItemGroup>
中:- 删除了
Microsoft.AspNetCore.App
。 - 删除了
Microsoft.AspNetCore.Razor.Design
。
- 删除了
在ASP.NET Core 3.0或更高版本中,项目默认为进程内托管模型。如果值为
InProcess
,可以选择在项目文件中删除<AspNetCoreHostingModel>
属性。
若要查看不再生成的包的完整列表,请选择以下展开列表:
- Microsoft.AspNetCore
- Microsoft.AspNetCore.All
- Microsoft.AspNetCore.App
- Microsoft.AspNetCore.Antiforgery
- Microsoft.AspNetCore.Authentication
- Microsoft.AspNetCore.Authentication.Abstractions
- Microsoft.AspNetCore.Authentication.Cookies
- Microsoft.AspNetCore.Authentication.Core
- Microsoft.AspNetCore.Authentication.OAuth
- Microsoft.AspNetCore.Authorization.Policy
- Microsoft.AspNetCore.CookiePolicy
- Microsoft.AspNetCore.Cors
- Microsoft.AspNetCore.Diagnostics
- Microsoft.AspNetCore.Diagnostics.HealthChecks
- Microsoft.AspNetCore.HostFiltering
- Microsoft.AspNetCore.Hosting
- Microsoft.AspNetCore.Hosting.Abstractions
- Microsoft.AspNetCore.Hosting.Server.Abstractions
- Microsoft.AspNetCore.Http
- Microsoft.AspNetCore.Http.Abstractions
- Microsoft.AspNetCore.Http.Connections
- Microsoft.AspNetCore.Http.Extensions
- Microsoft.AspNetCore.HttpOverrides
- Microsoft.AspNetCore.HttpsPolicy
- Microsoft.AspNetCore.Identity
- Microsoft.AspNetCore.Localization
- Microsoft.AspNetCore.Localization.Routing
- Microsoft.AspNetCore.Mvc
- Microsoft.AspNetCore.Mvc.Abstractions
- Microsoft.AspNetCore.Mvc.Analyzers
- Microsoft.AspNetCore.Mvc.ApiExplorer
- Microsoft.AspNetCore.Mvc.Api.Analyzers
- Microsoft.AspNetCore.Mvc.Core
- Microsoft.AspNetCore.Mvc.Cors
- Microsoft.AspNetCore.Mvc.DataAnnotations
- Microsoft.AspNetCore.Mvc.Formatters.Json
- Microsoft.AspNetCore.Mvc.Formatters.Xml
- Microsoft.AspNetCore.Mvc.Localization
- Microsoft.AspNetCore.Mvc.Razor
- Microsoft.AspNetCore.Mvc.Razor.ViewCompilation
- Microsoft.AspNetCore.Mvc.RazorPages
- Microsoft.AspNetCore.Mvc.TagHelpers
- Microsoft.AspNetCore.Mvc.ViewFeatures
- Microsoft.AspNetCore.Razor
- Microsoft.AspNetCore.Razor.Runtime
- Microsoft.AspNetCore.Razor.Design
- Microsoft.AspNetCore.ResponseCaching
- Microsoft.AspNetCore.ResponseCaching.Abstractions
- Microsoft.AspNetCore.ResponseCompression
- Microsoft.AspNetCore.Rewrite
- Microsoft.AspNetCore.Routing
- Microsoft.AspNetCore.Routing.Abstractions
- Microsoft.AspNetCore.Server.HttpSys
- Microsoft.AspNetCore.Server.IIS
- Microsoft.AspNetCore.Server.IISIntegration
- Microsoft.AspNetCore.Server.Kestrel
- Microsoft.AspNetCore.Server.Kestrel.Core
- Microsoft.AspNetCore.Server.Kestrel.Https
- Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions
- Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets
- Microsoft.AspNetCore.Session
- Microsoft.AspNetCore.SignalR
- Microsoft.AspNetCore.SignalR.Core
- Microsoft.AspNetCore.StaticFiles
- Microsoft.AspNetCore.WebSockets
- Microsoft.AspNetCore.WebUtilities
- Microsoft.Net.Http.Headers
Microsoft.AspNetCore Nuget包
集中组
名称 | 备注 |
---|---|
Microsoft.AspNetCore | >= .NET Standard 2.0; |
Http组
名称 | 备注 |
---|---|
Microsoft.AspNetCore.Http | >= .NET Standard 2.0; |
Microsoft.AspNetCore.Http.Features | >= .NET 6.0; >= .NET Standard 2.0; >= .NET Framework 4.6.1; |
Microsoft.AspNetCore.Http.Abstractions | >= .NET Standard 2.0; |
Microsoft.AspNetCore.Http.Extensions | >= .NET Standard 2.0; |
Microsoft.AspNetCore.Http.Connections.Common | >= .NET 7.0; >= .NET Standard 2.0; >= .NET Framework 4.6.2; |
Microsoft.AspNetCore.HttpOverrides | >= .NET Standard 2.0; |
Microsoft.AspNetCore.WebUtilities | >= .NET Standard 2.0; |
Hosting组
名称 | 备注 |
---|---|
Microsoft.AspNetCore.Hosting | >= .NET Standard 2.0; |
Microsoft.AspNetCore.Hosting.Abstractions | >= .NET Standard 2.0; |
Microsoft.AspNetCore.Hosting.Server.Abstractions | >= .NET Standard 2.0; |
Microsoft.AspNetCore.Hosting.WindowsServices | >= .NET 7.0; |
Authorization组
名称 | 备注 |
---|---|
Microsoft.AspNetCore.Authorization | >= .NET 7.0; >= .NET Standard 2.0; >= .NET Framework 4.6.2; |
Microsoft.AspNetCore.Authorization.Policy | >= .NET Standard 2.0; |
Routing组
名称 | 备注 |
---|---|
Microsoft.AspNetCore.Routing | >= .NET Core 2.2; >= .NET Standard 2.0; |
Microsoft.AspNetCore.Routing.Abstractions | >= .NET Standard 2.0; |
Mvc组
Localization组
名称 | 备注 |
---|---|
Microsoft.AspNetCore.Localization | >= .NET Standard 2.0; |
Microsoft.AspNetCore.Localization.Routing | >= .NET Standard 2.0; |
过期组
名称 | 备注 |
---|---|
Microsoft.AspNetCore.Mvc.Analyzers | |
Microsoft.AspNetCore.Mvc.Razor.Host | >= .NET Standard 1.6; >= .NET Framework 4.5.1; |
Microsoft.AspNetCore.Mvc.Api.Analyzers |
Microsoft.System Nuget包
System组
名称 | 备注 |
---|---|
System.Threading.Tasks.Extensions | >= .NET Core 2.1; >= .NET Standard 1.0; >= .NET Framework 4.6.1; |
System.Diagnostics.DiagnosticSource | >= .NET 5.0; >= .NETStandard 2.0; >= .NETFramework 4.6.1; |
System.Buffers | >= .NET Core 2.0; >= .NET Standard 1.1; >= .NET Framework 4.5; |
System.Memory | >= .NET Core 2.1; >= .NET Standard 1.1; >= .NET Framework 4.6.1; |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步