Microsoft.AspNetCore.Http.Features の分割

Microsoft.AspNetCore.Http.Features は、次の 2 つのアセンブリに分割されています。

  • 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 名前空間に存在し、互換性のために型転送が追加されています。

変更理由

この変更は、次の 2 つの理由で導入されました。

  • コア型をコンポーネント間でより広範に共有できるようにします。
  • 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