OSPlatform 属性の名前変更または削除

.NET 5 Preview 8 で実装された、MinimumOSPlatformAttributeRemovedInOSPlatformAttribute、および ObsoletedInOSPlatformAttribute 属性が、削除または名前変更されました。

変更内容

.NET 5 Preview 8 で System.Runtime.Versioning 名前空間に次の属性が実装されました。

  • MinimumOSPlatformAttribute
  • RemovedInOSPlatformAttribute
  • ObsoletedInOSPlatformAttribute

.NET 5 Preview 8 のプロジェクトで、net5.0-windows などのターゲット フレームワーク モニカーを使用し、.NET 5 の OS 固有のフレーバーをターゲットとしている場合、ビルドでは、アセンブリレベルの System.Runtime.Versioning.MinimumOSPlatformAttribute 属性が追加されます。

.NET 5 RC1 では、ObsoletedInOSPlatformAttribute が削除され、MinimumOSPlatformAttributeRemovedInOSPlatformAttribute が次のように名前変更されています。

Preview 8 での名前 RC1 以降での名前
MinimumOSPlatformAttribute SupportedOSPlatformAttribute
RemovedInOSPlatformAttribute UnsupportedOSPlatformAttribute

.NET 5 RC1 以降のプロジェクトで、net5.0-windows などのターゲット フレームワーク モニカーを使用し、.NET 5 の OS 固有のフレーバーをターゲットとしている場合、ビルドでは、アセンブリレベルの SupportedOSPlatformAttribute 属性が追加されます。

変更理由

.NET 5 Preview 8 で API をサポートするプラットフォームの指定に、System.Runtime.Versioning に属性が実装されました。 これらの属性は、プラットフォーム固有の API がそれらの API をサポートしないプラットフォームで使用された場合に、ビルド警告を生成する、プラットフォーム互換性アナライザーによって使用されます。

.NET 5 RC1 では、プラットフォーム互換性アナライザーにプラットフォームを除外する機能が追加されています。 この機能を使用すると、API を OS プラットフォームで完全にサポートされていないものとしてマークできます。 この機能では、より適切な名前を使用するなど、属性への変更が求められています。 不要になった ObsoletedInOSPlatformAttribute は、削除されています。

導入されたバージョン

5.0 RC1

プロジェクトのターゲットを .NET 5 Preview 8 から .NET 5 RC1 に変更した場合、これらの変更によりビルド エラーまたは実行時エラーが発生することがあります。 たとえば、MinimumOSPlatformAttribute を名前変更すると、エラーが発生する可能性があります。これは、この属性がビルド時にプラットフォーム固有のアセンブリに適用されますが、古い成果物では古い API 名を参照したままであるためです。

ビルド時のエラーの例:

  • エラー CS0246:型または名前空間の名前 'MinimumOSPlatformAttribute' が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)
  • エラー CS0246:型または名前空間の名前 'RemovedInOSPlatformAttribute' が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)
  • エラー CS0246:型または名前空間の名前 'ObsoletedInOSPlatformAttribute' が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)

ランタイム エラーの例:

ハンドルされていない例外です。 System.TypeLoadException: アセンブリ 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' から型 'System.Runtime.Versioning.MinimumOSPlatformAttribute' を読み込むことができませんでした。

これらのエラーを解決するには:

  • MinimumOSPlatformAttribute に対する参照を SupportedOSPlatformAttribute に更新します。
  • RemovedInOSPlatformAttribute に対する参照を UnsupportedOSPlatformAttribute に更新します。
  • ObsoletedInOSPlatformAttribute に対する参照を削除します。
  • 古いビルド成果物を削除して、自分のプロジェクトをリビルドします (またはクリーンおよびビルドを実行します)。

影響を受ける API

  • System.Runtime.Versioning.MinimumOSPlatformAttribute
  • System.Runtime.Versioning.ObsoletedInOSPlatformAttribute
  • System.Runtime.Versioning.RemovedInOSPlatformAttribute