Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie Ihre Desktop-App-Projekte so konfigurieren, dass Windows-Runtime (WinRT)-APIs aufgerufen werden– die APIs, die moderne Windows Features wie Benachrichtigungen, Dateiauswahl, Freigabe und vieles mehr ermöglichen.
Hinweis
Einige WinRT-APIs werden in Desktop-Apps nicht unterstützt. Weitere Informationen finden Sie unter Windows-Runtime-APIs, die in Desktop-Apps nicht unterstützt werden.
Konfigurieren eines .NET Projekts
.NET 6 und höher: Verwenden Sie die Option "Target Framework Moniker"
Geben Sie einen betriebssystem-spezifischen Ziel-Framework-Moniker (TFM) in Ihrer Projektdatei an. Dadurch wird zur Erstellungszeit ein Verweis auf das entsprechende Windows SDK-Zielpaket hinzugefügt.
Wählen Sie in Visual Studio Project > [ProjectName] Eigenschaften aus.
Suchen Sie auf der Eigenschaftenseite "Allgemeines zur Anwendung>", indem Sie es in der linken Navigationsleiste auswählen oder nach unten scrollen.
Wählen Sie Einstellungen für:
- Target-Framework – Dies wird zunächst auf die .NET Version festgelegt, die Sie beim Erstellen des Projekts ausgewählt haben, aber Sie können es hier ändern.
- Target-OS – Lassen Sie diese Einstellung auf Windows.
- Zielbetriebssystemversion – Wählen Sie die Version für den API-Satz aus, den Sie verwenden möchten, in der Regel die neueste.
- Unterstützte Betriebssystemversion (Optional) – Weitere Informationen finden Sie im nächsten Abschnitt.
Diese Werte werden im Target Framework Moniker wie folgt übersetzt:
-
Ziel-Framework -
net10.0 -
Zielbetriebssystem -
-windows -
Zielbetriebssystemversion -
10.0.22621.0
<TargetFramework>net10.0-windows10.0.22621.0</TargetFramework>
<!-- If set... -->
<SupportedOSPlatformVersion>10.0.19041.0</SupportedOSPlatformVersion>
Sie können die Werte auch festlegen, indem Sie die Projektdatei manuell bearbeiten.
Klicken Sie in Visual Studio mit der rechten Maustaste auf Ihr Projekt im Projektmappen-Explorer und wählen Sie Projektdatei bearbeiten aus.
Ersetzen Sie den Wert TargetFramework durch einen Windows-versionsspezifischen TFM.
Ziel TFM Windows 11, Version 24H2 net10.0-windows10.0.26100.0Windows 11, Version 22H2 net10.0-windows10.0.22621.0Windows 11 (erstversion) net10.0-windows10.0.22000.0Windows 10, Version 2004 net10.0-windows10.0.19041.0Windows 10, Version 1903 net10.0-windows10.0.18362.0Windows 10, Version 1809 net10.0-windows10.0.17763.0Hinweis
Die angezeigten Werte gelten für .NET 10. Aktualisieren Sie nach Bedarf für andere Versionen von .NET:
net8.0,net9.0.Beispiel:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework> </PropertyGroup> </Project>Speichere und schließe die Projektdatei.
Tip
Die vom TFM angegebene Version gibt an, welche APIs für Ihre App verfügbar sind. Sie steuert nicht die Betriebssystemversion, die Ihre App zur Laufzeit unterstützt. Sie wird verwendet, um die Verweisassemblys auszuwählen, mit denen Ihr Projekt kompiliert wird, und um Ressourcen aus NuGet-Paketen auszuwählen. Stellen Sie sich diese Version als "Plattformversion" oder "Betriebssystem-API-Version" vor, um sie von der Laufzeitbetriebssystemversion zu unterscheiden. Weitere Informationen finden Sie unter Target Frameworks: Betriebssystemversion in TFMs.
Unterstützung einer mindestens Windows Version
Wenn Ihre App auf einer Windows Version ausgeführt werden soll, die älter als Ihr TFM-Ziel ist, legen Sie die SupportedOSVersion (SupportedOSPlatformVersion) fest, wie im vorherigen Abschnitt gezeigt. Weitere Informationen finden Sie unter Zielframeworks: Unterstützen älterer Betriebssystemversionen.
Wenn Sie auf eine Reihe von Betriebssystemversionen abzielen, schützen Sie Aufrufe von APIs, die für alle Versionen mit ApiInformation-Prüfungen nicht verfügbar sind. Weitere Informationen finden Sie unter Versionsadaptive Apps.
Wenn SupportedOSVersion festgelegt ist, gibt Visual Studio eine Warnung für APIs an, die eine Laufzeitüberprüfung benötigen. Wenn die Zielversion beispielsweise 19041 ist und die Mindestversion 17763 ist, wird beim Aufrufen von AppInfo.Current eine Warnung wie folgt angezeigt.
CA1416 Using platform dependent API on a component makes the code no longer work across all platforms.
This call site is reachable on: 'Windows' 10.0.17763.0 and later. 'AppInfo.Current' is only supported on: 'Windows' 10.0.19041.0 and later.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
<SupportedOSPlatformVersion>10.0.17763.0</SupportedOSPlatformVersion>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
</PropertyGroup>
</Project>
Hinweis
Sie können auch manuell TargetPlatformMinVersion hinzufügen, dies stellt jedoch keine Kompilierungszeitwarnungen in Visual Studio bereit.
WinRT-APIs werden in .NET 6 und höher nicht unterstützt
In .NET 6 und höher werden mehrere WinRT-APIs im Windows.UI Namespace nicht unterstützt. Verwenden Sie die entsprechenden APIs im Microsoft. Ui Namespace (bereitgestellt durch den Windows App SDK) stattdessen:
| Nicht unterstützt | Stattdessen verwenden |
|---|---|
Windows.UI.Colors |
Microsoft.UI.Colors |
Windows.UI.ColorHelper |
Microsoft.UI.ColorHelper |
Windows.UI.Text (die meisten Typen) |
Microsoft.UI.Text |
Windows.UI.Xaml (alle Typen) |
Microsoft.UI.Xaml |
.NET Core 3.x oder .NET Framework: Installieren des NuGet-Pakets
Wenn Ihre App auf .NET Core 3.x oder .NET Framework ausgerichtet ist, installieren Sie das Microsoft.Windows.SDK.Contracts NuGet-Paket:
Klicken Sie in Visual Studio mit der rechten Maustaste auf Ihr Projekt, und wählen Sie Manage NuGet Packages aus.
Suchen Sie nach
Microsoft.Windows.SDK.Contracts.Wählen Sie die Paketversion aus, die Ihrem mindesten Windows Ziel entsprechen:
Paketversion Windows-Zielsystem 10.0.19041.xxxx Windows 10, Version 2004 10.0.18362.xxxx Windows 10, Version 1903 10.0.17763.xxxx Windows 10, Version 1809 10.0.17134.xxxx Windows 10, Version 1803 Klicken Sie auf Installieren.
Multitargeting .NET 6+ und den früheren .NET-Versionen
Konfigurieren Sie die Projektdatei so, dass der TFM-Ansatz für .NET 6+ und das NuGet-Paket für frühere Versionen verwendet wird:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFrameworks>netcoreapp3.1;net8.0-windows10.0.19041.0</TargetFrameworks>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<PackageReference Condition="'$(TargetFramework)' == 'netcoreapp3.1'"
Include="Microsoft.Windows.SDK.Contracts"
Version="10.0.19041.0"/>
</ItemGroup>
</Project>
Bedingte Kompilierung
Verwenden Sie die bedingte Kompilierung beim Multiadressieren in .NET 6+ und früheren Versionen, um versionsspezifischen Code in einem einzelnen Projekt zu schreiben. Weitere Informationen finden Sie unter Zielframeworks: Präprozessorsymbole.
#if NET6_0_OR_GREATER
// Code that uses .NET 6+ APIs or TFM-available WinRT APIs
#else
// Fallback code for .NET Core 3.x / .NET Framework
#endif
Konfigurieren eines C++-Projekts (Win32)
Verwenden Sie C++/WinRT , um WinRT-APIs aus C++-Desktop-Apps zu nutzen.
- Installieren Sie das Microsoft.Windows.CppWinRT NuGet-Paket.
- Da C++/WinRT Features aus dem C++17-Standard verwendet, stellen Sie sicher, dass die Projekteigenschaft C/C++ > Language > C++ Language Standard auf ISO C++17 Standard (/std:c++17) oder höher in Visual Studio festgelegt ist.
Weitere Informationen finden Sie unter Visual Studio Support für C++/WinRT.
Nächste Schritte
Sie können jetzt Windows-Runtime (WinRT)-APIs aus dem Windows SDK aufrufen.
Informationen zum Aufrufen von WinRT-APIs aus dem Windows App SDK finden Sie unter Use the Windows App SDK in an existing project.
Einige WinRT-APIs erfordern die Paketidentität. Weitere Informationen finden Sie unter:
- Übersicht über die Verpackung
- Features, für die Paketidentität benötigt wird
- Verpacken Ihrer App mithilfe von MSIX mit nur einem Projekt
- Identität für eine nicht verpackte App gewähren
Verwandte Inhalte
Windows developer