WinRT の組み込みサポートは .NET から削除されています

.NET の [Windows runtime (WinRT)](/uwp/winrt-cref/winrt-type-system) API を使用するための組み込みサポートは削除されています。

導入されたバージョン

5.0

変更の説明

以前は、CoreCLR では、[Windows メタデータ (WinMD) ファイル](/uwp/winrt-cref/winmd-files)を使用し、WinRT タイプをアクティブ化し、使用していました。 .NET 5 以降、CoreCLR では、WinMD ファイルを直接使用することができなくなりました。

サポートされていないアセンブリを参照しようとすると、 が表示されます。 WinRT クラスをアクティブ化すると、 が表示されます。

この破壊的変更は次の理由から行われました。

  • WinRT は .NET ランタイムとは別に開発し、改善できるため。
  • iOS や Android など、他のオペレーティング システムに提供されている相互運用システムと釣り合いを取るため。
  • C# の機能、中間言語 (IL) のトリミング、Ahead Of Time (AOT) コンパイルなど、その他の .NET 機能を活用するため。
  • .NET ランタイム コードベースを簡略化するため。
  • Microsoft.Windows.SDK.Contracts パッケージの参照を削除します。 代わりに、プロジェクトの `TargetFramework` プロパティ経由でアクセスする Windows API のバージョンを指定します。 次に例を示します。

    <TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
    
  • .winmd ファイルで定義されているサード パーティのランタイム コンポーネントを使おうとしている場合は、Microsoft.Windows.CsWinRT NuGet パッケージへの参照を追加します。 C# プロジェクションを生成する方法については、C#/WinRT に関するドキュメントを参照してください。

詳細については、「[デスクトップ アプリで Windows ランタイム API を呼び出す](/windows/apps/desktop/modernize/desktop-to-uwp-enhance)」を参照してください。

影響を受ける API