Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Windows App SDK is de volgende evolutie in het ontwikkelplatform voor Windows-apps. Maar dit onderwerp laat zien hoe u Windows App SDK-API's (en Windows Runtime-API's) kunt gebruiken in een Windows Forms-app (WinForms ).
- In veel gevallen wilt u uw WinForms-app opnieuw maken in de vorm van een WinUI 3-app . Een van de voordelen van het overstappen op WinUI 3 is om toegang te krijgen tot het Fluent Design System (zie ook Windows-apps ontwerpen en coden). En WinUI 3 maakt deel uit van de Windows App SDK. Een WinUI 3-app kan dus ook gebruikmaken van de andere Windows App SDK-functies en API's. In dit onderwerp wordt niet beschreven hoe u uw WinForms-app migreert naar WinUI 3.
- Maar als u merkt dat u functies van WinForms gebruikt die nog niet beschikbaar zijn in WinUI 3, kunt u nog steeds Windows App SDK-functies (zoals App Lifecycle, MRT Core, DWriteCore en andere) gebruiken in uw WinForms-app. In dit onderwerp wordt uitgelegd hoe u dit doet.
En als u nog geen Bestaand WinForms-project hebt, of als u het proces wilt oefenen, bevat dit onderwerp stappen voor het maken van een WinForms-project, zodat u dit kunt volgen en configureren om Windows App SDK-API's aan te roepen.
Vereiste voorwaarden
- Hulpprogramma's installeren voor de Windows App SDK-.
- In dit onderwerp worden zowel uitgepakte als verpakte WinForms-apps behandeld. Als uw WinForms-app is uitgepakt (welke WinForms-apps standaard zijn), moet u ervoor zorgen dat alle afhankelijkheden voor uitgepakte apps zijn geïnstalleerd (zie de Implementatiehandleiding voor Windows App SDK voor frameworkafhankelijke apps die zijn verpakt met externe locatie of uitgepakt). Een snelle manier om dat te doen is om de nieuwste downloads voor de Windows App SDKte bezoeken, vervolgens een van de stabiele versie Runtime-downloadste downloaden, uit te pakken en uit te voeren.
Belangrijk
De versie van de runtime die u installeert, moet overeenkomen met de versie van het NuGet-pakket Microsoft.WindowsAppSDK dat u in een latere stap gaat installeren.
Voor meer informatie over de termen ongepakt en verpakt, zie Voordelen en nadelen van het verpakken van uw app.
Een WinForms-project maken als u er nog geen hebt
Als u al een WinForms-project hebt, kunt u verdergaan met de volgende sectie.
- Maak in Visual Studio een nieuw C# Windows Forms App-project (een .NET-project). Zorg ervoor dat u de projectsjabloon kiest met de exacte naam Windows Forms App en niet de Windows Forms App (.NET Framework).
- Geef het project een naam en accepteer alle standaardopties.
U hebt nu een project dat een uitgepakte WinForms-app bouwt.
Uw WinForms-project configureren voor Windows App SDK-ondersteuning
Eerst gaan we het projectbestand bewerken.
Klik in Solution Explorer met de rechtermuisknop op uw project en kies Projectbestand bewerken.
Met deze stap kunt u WinRT-API's (Windows Runtime) aanroepen (inclusief Windows App SDK-API's). Binnen het PropertyGroup-element bevindt zich het TargetFramework-element, dat is ingesteld op een waarde zoals net6.0. Voeg een moniker toe aan die doelraamwerkwaarde, specifiek een Target Framework Moniker. Gebruik bijvoorbeeld het volgende als uw app is gericht op Windows 10, versie 2004:
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>Voeg ook binnen het Element PropertyGroup een RuntimeIdentifiers-element toe, zoals hieronder:
<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>Een WinForms-app wordt standaard uitgepakt (wat betekent dat deze niet is geïnstalleerd met behulp van MSIX). Een uitgepakte app moet de Windows App SDK-runtime initialiseren voordat u een andere functie van de Windows App SDK gebruikt. U kunt dit automatisch doen wanneer uw app wordt gestart via automatische initialisatie. U hebt zojuist (ook in het element PropertyGroup) de
WindowsPackageTypeprojecteigenschap passend ingesteld, als volgt:<WindowsPackageType>None</WindowsPackageType>Als u geavanceerde behoeften hebt (zoals aangepaste foutafhandeling of als u een specifieke versie van de Windows App SDK wilt laden), kunt u in plaats van auto-initialisatie de bootstrapper-API expliciet aanroepen. Zie De Windows App SDK-runtime gebruiken voor apps die zijn verpakt met externe locatie of uitgepakt.
Sla het projectbestand op en sluit het.
Vervolgens installeren we het NuGet-pakket van de Windows App SDK in het project.
- Klik in Solution Explorermet de rechtermuisknop op het knooppunt afhankelijkheden van uw project en kies NuGet-pakketten beheren....
- Selecteer in het venster NuGet Package Manager het tabblad Bladeren en installeer het meest recente stabieleMicrosoft.WindowsAppSDK-pakket.
Sommige Windows App SDK-functies gebruiken in uw WinForms-app
Deze sectie biedt een zeer eenvoudig voorbeeld van het aanroepen van Windows App SDK-API's vanuit een WinForms-app. De functie MRT Core wordt gebruikt (zie Resources beheren met MRT Core). Als dit voorbeeld werkt voor uw WinForms-project (en als u een nieuw project hebt gemaakt voor dit scenario, dan gebeurt dat wel), kunt u deze stappen volgen.
Open
Form1.cs(met de opdracht View Designer) en sleep een Knop en een Label uit de Werkbalk naar de ontwerper.Dubbelklik op knop 1 om een eventhandler te genereren.
Nu voegen we code toe die gebruikmaakt van de ResourceManager-klasse in de Windows App SDK om een tekenreeksresource te laden.
Voeg een nieuw resourcebestand (.resw)- item toe aan uw project (laat dit staan met de standaardnaam Resources.resw).
Wanneer het resourcesbestand in de editor is geopend, maakt u een nieuwe string resource met de volgende eigenschappen.
- Naam: bericht
- Waarde: Hallo, bronnen!
Sla het resourcesbestand op en sluit het.
Open
Form1.cs(met behulp van de opdracht Code weergeven ) en bewerk de gebeurtenis-handler om er als volgt uit te zien:
private void button1_Click(object sender, EventArgs e) { // Construct a resource manager using the resource index generated during build. var manager = new Microsoft.Windows.ApplicationModel.Resources.ResourceManager(); // Look up a string in the resources file using the string's name. label1.Text = manager.MainResourceMap.GetValue("Resources/Message").ValueAsString; }Bouw het project en voer de app uit. Klik op de knop om de tekenreeks
Hello, resources!te zien.
Aanbeveling
Als u tijdens runtime een berichtvenster ziet waarin wordt aangegeven dat de toepassing een bepaalde versie van De Windows App Runtime nodig heeft en u wordt gevraagd of u deze nu wilt installeren, klikt u op Ja. Hiermee gaat u naar nieuwste downloads voor de Windows App SDK. Zie de sectie Vereisten hierboven voor meer informatie.
Zie ook Runtime-architectuur voor meer informatie over de afhankelijkheid van het Framework-pakket, dat uw app nodig heeft wanneer deze gebruikmaakt van de Windows App SDK, en de extra onderdelen die nodig zijn om in een uitgepakte app te werken.
Uw WinForms-app verpakken en implementeren met MSIX
Voor sommige Windows-functies en API's (waaronder de Windows App SDK meldingen-API's) moet uw app tijdens uitvoeringstijd een pakketidentiteit hebben (met andere woorden, uw app moet verpakt zijn). Zie voor meer informatie functies waarvoor pakketidentiteitis vereist.
- Klik in Solution Explorer in Visual Studio met de rechtermuisknop op de oplossing en kiesNieuw project>....
- Zoek in het dialoogvenster Een nieuw project toevoegen naar packaging, kies het C# Windows Application Packaging Project sjabloon en klik op Volgende.
- Geef het project een naam en klik op Aanmaken.
- We willen opgeven welke toepassingen in de oplossing moeten worden opgenomen in het pakket. Klik in het verpakkingsproject (niet het WinForms-project) met de rechtermuisknop op het knooppunt Afhankelijkheden en kies Projectverwijzing toevoegen....
- Kies uw WinForms-project in de lijst met projecten in de oplossing en klik op OK.
- Vouw de knoop Afhankelijkheden>Applicaties van het verpakkingsproject uit en controleer of uw WinForms-project wordt vermeld en in vet wordt weergegeven. Dit betekent dat het wordt gebruikt als uitgangspunt voor het pakket.
- Klik met de rechtermuisknop op het verpakkingsproject en kies Set As Startup Project.
- Klik met de rechtermuisknop op het WinForms-project en kies Projectbestand bewerken.
- Verwijder
<WindowsPackageType>None</WindowsPackageType>, sla op en sluit. - Kies in de vervolgkeuzelijst Oplossingsplatforms, x64 (in plaats van Any CPU).
- Controleer of u kunt bouwen en uitvoeren.
Nu u uw WinForms-app hebt verpakt, kunt u API's aanroepen waarvoor pakketidentiteit is vereist. Open Form1.cs dus (met behulp van de opdracht Code weergeven ) en bewerk de gebeurtenis-handler om er als volgt uit te zien:
private void button1_Click(object sender, EventArgs e)
{
var notification = new AppNotificationBuilder()
.AddArgument("action", "viewConversation")
.AddArgument("conversationId", "9813")
.AddText("Andrew sent you a picture")
.AddText("Check this out, The Enchantments in Washington!")
.BuildNotification();
AppNotificationManager.Default.Show(notification);
}
Opnieuw bouwen en uitvoeren. Klik op de knop en controleer of er een toastmelding wordt weergegeven. Wanneer deze wordt aangeroepen vanuit een proces dat tijdens runtime geen pakketidentiteit heeft, genereren de meldingen-API's een uitzondering.
Opmerking
In de stappen in deze sectie hebt u gezien hoe u een verpakte appkunt maken. Een alternatief is het maken van een verpakte app met externe locatie. Zie voor een herinnering aan al deze voorwaarden de voor- en nadelen van het verpakken van uw app.
Verwante onderwerpen
- Windows Forms (WinForms)
- Hulpprogramma's installeren voor de Windows App SDK
- Implementatiehandleiding voor Windows App SDK voor frameworkafhankelijke apps die zijn verpakt met externe locatie of uitgepakt
- Meest recente downloads voor de Windows App SDK
- Voordelen en nadelen van het verpakken van uw app
- De Windows App SDK-runtime gebruiken voor apps die zijn verpakt met een externe locatie of uitgepakt
- Runtime-architectuur
- Functies waarvoor pakketidentiteit is vereist
Windows developer