乘风破浪,遇见最佳跨平台跨终端框架.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团队支持的所有包。

image

支持的目标框架

目标框架 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.0net6.0net7.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.SdkMicrosoft.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组

名称 备注
Microsoft.AspNetCore.Mvc >= .NET Standard 2.0;
Microsoft.AspNetCore.Mvc.Core >= .NET Standard 2.0;
Microsoft.AspNetCore.Mvc.Abstractions >= .NET Standard 2.0;
Microsoft.AspNetCore.Mvc.Formatters.Json >= .NET Standard 2.0;
Microsoft.AspNetCore.Mvc.Formatters.Xml >= .NET Standard 2.0;
Microsoft.AspNetCore.Mvc.DataAnnotations >= .NET Standard 2.0;
Microsoft.AspNetCore.Mvc.ApiExplorer >= .NET Standard 2.0;
Microsoft.AspNetCore.Mvc.ViewFeatures >= .NET Standard 2.0;
Microsoft.AspNetCore.Mvc.NewtonsoftJson >= .NET 7.0;
Microsoft.AspNetCore.Mvc.Razor >= .NET Standard 2.0;
Microsoft.AspNetCore.Mvc.Razor.Extensions >= .NET Standard 2.0;
Microsoft.AspNetCore.Mvc.Razor.ViewCompilation >= .NET Standard 2.0;
Microsoft.AspNetCore.Mvc.Localization >= .NET Standard 2.0;
Microsoft.AspNetCore.Mvc.TagHelpers >= .NET Standard 2.0;
Microsoft.AspNetCore.Mvc.Cors >= .NET Standard 2.0;
Microsoft.AspNetCore.Mvc.RazorPages >= .NET Standard 2.0;
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation >= .NET 7.0;
Microsoft.AspNetCore.Mvc.Versioning >= .NET 5.0;
>= .NET Core 3.1;
Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer >= .NET 5.0;
>= .NET Core 3.1;
Microsoft.AspNetCore.Mvc.Testing >= .NET 7.0;
Microsoft.AspNetCore.Mvc.WebApiCompatShim >= .NET Standard 2.0;

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;

参考

posted @ 2022-08-23 00:48  TaylorShi  阅读(322)  评论(0编辑  收藏  举报