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.
Empfohlene Aktion
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.