Integrierte Unterstützung für WinRT wird aus .NET entfernt

Die integrierte Unterstützung für die Nutzung von WinRT-APIs (Windows Runtime) in .NET wird entfernt.

Eingeführt in Version

5.0

Änderungsbeschreibung

Zuvor konnte CoreCLR Windows-Metadatendateien (WinMD) verwenden, um WinRT-Typen zu aktivieren und zu nutzen. Ab .NET 5 kann CoreCLR WinMD-Dateien nicht mehr direkt nutzen.

Wenn Sie versuchen, auf eine nicht unterstützte Assembly zu verweisen, wird eine FileNotFoundException zurückgegeben. Wenn Sie eine WinRT-Klasse aktivieren, wird eine PlatformNotSupportedException zurückgegeben.

Dieser Breaking Change wurde aus den folgenden Gründen vorgenommen:

  • WinRT kann jetzt unabhängig von der .NET-Runtime entwickelt und verbessert werden.
  • Außerdem dient dies der Symmetrie mit Interopsystemen, die für andere Betriebssysteme wie iOS und Android bereitgestellt werden.
  • Andere .NET-Features wie C#-Features, IL-Trimming (Intermediate Language, Zwischensprache) und die AOT-Kompilierung (Ahead-of-Time) können genutzt werden.
  • Die .NET-Runtimecodebasis kann vereinfacht werden.
  • Entfernen Sie Verweise auf das Microsoft.Windows.SDK.Contracts-Paket. Geben Sie stattdessen die Version der Windows-APIs an, auf die Sie über die TargetFramework-Eigenschaft des Projekts zugreifen möchten. Beispiel:

    <TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
    
  • Wenn Sie eine Laufzeitkomponente eines Drittanbieters verwenden, die in einer WINMD-Datei definiert ist, fügen Sie einen Verweis auf das NuGet-Paket Microsoft.Windows.CsWinRT hinzu. Informationen zum Generieren der C#-Projektion finden Sie in der C#/WinRT-Dokumentation.

Weitere Informationen finden Sie unter Aufrufen von Windows-Runtime-APIs in Desktop-Apps.

Betroffene APIs