Microsoft.AspNetCore.Http.Features 拆分

Microsoft.AspNetCore.Http.Features 已拆分为以下两个程序集:

  • Microsoft.AspNetCore.Http.Features
  • Microsoft.Extensions.Features

有关讨论,请参阅 GitHub 问题 dotnet/aspnetcore#32307

引入的版本

ASP.NET Core 6.0

旧行为

Microsoft.AspNetCore.Http.Features 5.0 在 ASP.NET 共享框架中提供且同时作为 NuGet 包提供。 Microsoft.AspNetCore.Http.Features 5.0 面向 .NET 4.6.1、.NET Standard 2.0 和 .NET 5。

新行为

Microsoft.AspNetCore.Http.Features 6.0 仅在 ASP.NET 共享框架中提供,但不作为 NuGet 包提供。 它仅面向 .NET 6。

Microsoft.Extensions.Features 6.0 在 ASP.NET 共享框架中提供且同时作为 NuGet 包提供。 它面向 .NET 4.6.1、.NET Standard 2.0 和 .NET 6。

以下类型已移动到新的 Microsoft.Extensions.Features 程序集:

这些类型仍在 Microsoft.AspNetCore.Http.Features 命名空间中,并且已添加类型转发以实现兼容。

更改原因

引入此更改的原因有两个:

  • 允许跨组件更广泛地共享核心类型。
  • 允许 Microsoft.AspNetCore.Http.Features 中其余特定于 Http 的组件利用新的运行时和语言功能。

升级到 ASP.NET Core 6.0 时,请删除 Microsoft.AspNetCore.Http.Features 的所有包引用。 仅在需要时添加 Microsoft.Extensions.Features 的包引用。

对于需要使用 Microsoft.AspNetCore.Http.Features 中的类型的类库,请改为添加 FrameworkReference 项:

<ItemGroup>
  <FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

有关添加框架引用的详细信息,请参阅使用 ASP.NET Core 共享框架

具有过期引用的库可能会遇到 TypeLoadException 或以下错误:

错误 CS0433 类型 'IFeatureCollection' 存在于 'Microsoft.AspNetCore.Http.Features, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' 和 'Microsoft.Extensions.Features, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' 中

若要解决此错误,请向任何受影响的项目添加对 Microsoft.AspNetCore.App 的 FrameworkReference

对于相关问题,请参阅 dotnet/aspnetcore#32307

受影响的 API