Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il Windows App SDK è la prossima evoluzione della piattaforma di sviluppo Windows app. Questo argomento illustra tuttavia come usare api Windows App SDK (e API Windows Runtime) in un'app Windows Forms (WinForms)!
- In molti casi, dovrai ricreare l'app WinForms sotto forma di app WinUI 3 . Solo uno dei vantaggi del passaggio a WinUI consiste nell'avere access al Fluent Design System (vedere anche Design e scrivere il codice delle app di Windows). E WinUI fa parte del Windows App SDK, quindi, naturalmente, un'app WinUI può usare anche le altre funzionalità e API Windows App SDK. Questo argomento non illustra il processo di migrazione dell'app WinForms a WinUI.
- Tuttavia, se si scopre che si usano funzionalità di WinForms non ancora disponibili in WinUI, è comunque possibile usare Windows App SDK funzionalità (ad esempio ciclo di vita delle app, MRT Core, DWriteCore e altri) nell'app WinForms. Questo argomento spiega come fare.
E nel caso in cui non si abbia già un project WinForms esistente o si vuole praticare il processo, questo argomento include i passaggi per creare un project WinForms in modo da poter seguire e configurarlo per chiamare le API di Windows App SDK.
Prerequisiti
- Installare gli strumenti per il Windows App SDK.
- In questo argomento vengono illustrate sia le app WinForms non in pacchetto che le app WinForms in pacchetto. Se l'app WinForms è non impacchettata (le app WinForms lo sono per impostazione predefinita), assicurarsi che tutte le dipendenze per le app non impacchettate siano installate (vedere la guida alla distribuzione di Windows App SDK per le app dipendenti dal framework impacchettate con percorso esterno o non impacchettate). Un modo rapido per farlo consiste nel visitare Ultimi download per Windows App SDK, quindi scaricare, decomprimere e eseguire uno dei download delle versioni stabili Download del runtime.
Importante
La versione del Runtime installata deve corrispondere alla versione del pacchetto NuGet Microsoft.WindowsAppSDK che verrà installato in un passaggio successivo.
Per maggiori informazioni sui termini Non inclusi nel pacchetto e inclusi nel pacchetto, vedere Vantaggi e svantaggi della creazione di pacchetti per l'app.
Crea un project WinForms se non ne hai già uno
Se hai già un project WinForms, puoi passare alla sezione successiva.
- In Visual Studio, crea un nuovo progetto Windows Forms App (che è un progetto .NET). Prestare attenzione a scegliere il modello di progetto con il nome esatto Windows Forms App e non Windows Forms App (.NET Framework).
- Assegnare al project un nome e accettare tutte le opzioni predefinite.
È ora disponibile un progetto che compila un'app WinForms non impacchettata.
Configurare i project WinForms per il supporto di Windows App SDK
Prima di tutto si modificherà il file project.
In Solution Explorer fare clic con il pulsante destro del mouse sul project e scegliere Edit Project File.
Questo passaggio consente di chiamare api Windows Runtime (WinRT) (incluse Windows App SDK API). All'interno dell'elemento PropertyGroup è presente l'elemento TargetFramework, che viene impostato su un valore come net6.0. Aggiungere a tale valore del framework di destinazione un moniker (in particolare, un Moniker del Framework di Destinazione). Ad esempio, usare quanto segue se l'app è destinata a Windows 10 versione 2004:
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>Inoltre, all'interno dell'elemento PropertyGroup aggiungere un elemento RuntimeIdentifiers simile al seguente:
<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>Per impostazione predefinita, un'app WinForms non è inclusa nel pacchetto (ovvero non è installata tramite MSIX). Un'app non in pacchetto deve inizializzare il runtime di Windows App SDK prima di usare qualsiasi altra funzionalità del Windows App SDK. È possibile farlo automaticamente all'avvio dell'app tramite Inizializzazione automatica. È sufficiente impostare (anche all'interno dell'elemento PropertyGroup) la proprietà
WindowsPackageTypeproject in modo appropriato, come illustrato di seguito:<WindowsPackageType>None</WindowsPackageType>Se hai necessità avanzate (ad esempio, la gestione degli errori personalizzata o il caricamento di una versione specifica del Windows App SDK), invece di all'inizializzazione automatica, puoi chiamare esplicitamente l'API del bootstrapper. Per ulteriori informazioni, vedi Usa il runtime di Windows App SDK per app confezionate con posizione esterna o non confezionate.
Salvare e chiudere il file project.
Verrà quindi installato il pacchetto NuGet Windows App SDK nel project.
- In Solution Explorer fare clic con il pulsante destro del mouse sul nodo Dependencies del project e scegliere Gestisci pacchetti NuGet... .
- Nella finestra NuGet Package Manager selezionare la scheda Browse e installare il pacchetto stabile Latest stableMicrosoft.WindowsAppSDK.
Usare alcune funzionalità Windows App SDK nell'app WinForms
Questa sezione offre un esempio molto semplice di chiamata Windows App SDK API da un'app WinForms. Usa la funzionalità MRT Core (vedere Gestire le risorse con MRT Core). Se questo esempio funziona per i project WinForms (e se ne hai creato uno nuovo per questa procedura dettagliata), puoi seguire questa procedura.
Aprire
Form1.cs(usando il comando Progettazione visualizzazioni) e trascinare un Pulsante e un'Etichetta dalla Casella degli strumenti e nell'area di progettazione.Fare doppio clic su button1 per generare un gestore eventi.
A questo punto verrà aggiunto codice che usa la classe ResourceManager nella Windows App SDK per caricare una risorsa stringa.
Aggiungere un nuovo elemento Resources File (.resw) al project (lasciare il nome predefinito di Resources.resw).
Con il file di risorse aperto nell'editor, creare una nuova risorsa di stringa con le proprietà seguenti.
- Nome: Messaggio
- Valore: Hello, resources!
Salvare e chiudere il file di risorse.
Aprire
Form1.cs(usando il comando Visualizza codice ) e modificare il gestore eventi in modo che sia simile al seguente:
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; }Compilare il project ed eseguire l'app. Fare clic sul pulsante per visualizzare la stringa
Hello, resources!visualizzata.
Suggerimento
Se in fase di esecuzione viene visualizzata una finestra di messaggio che indica che l'applicazione richiede una versione specifica del runtime di Windows App e chiede se si vuole installarla ora, fare clic su Yes. Questo ti porterà a Ultimi download per il Windows App SDK. Per altre informazioni, vedere la sezione Prerequisiti di cui sopra.
Vedi anche Architettura runtime per altre informazioni sulla dipendenza dal pacchetto Framework da cui l'app dipende quando utilizza il Windows App SDK, e i componenti aggiuntivi necessari per funzionare in un'app non in pacchetto.
Crea il pacchetto e distribuisci l'app WinForms con MSIX
Alcune funzionalità e API di Windows (incluse le API Windows App SDK notifications) richiedono che l'app abbia package identity in fase di esecuzione (in altre parole, l'app deve essere packaged). Per altre informazioni, vedere Funzionalità che richiedono l'identità del pacchetto.
- In Solution Explorer in Visual Studio fare clic con il pulsante destro del mouse sulla soluzione e scegliere Aggiungi>Nuovo Project... .
- Nella finestra di dialogo Aggiungi un nuovo progetto, cercare packaging, scegliere il modello C# Windows Application Packaging Project e fare clic su Avanti.
- Assegnare al project il nome e fare clic su Crea.
- L'intento è di specificare quali applicazioni nella soluzione devono essere incluse nel pacchetto. Quindi nel progetto di creazione pacchetti (non nel progetto WinForms), fare clic con il pulsante destro del mouse sul nodo Dependencies e scegliere Aggiungi riferimento al progetto....
- Nell'elenco dei progetti nella soluzione scegliere il project WinForms e fare clic su OK.
- Espandi il nodo del progetto Dependencies>Applications e verifica che il progetto WinForms sia referenziato ed evidenziato in grassetto. Questo significa che verrà usato come punto di partenza per il pacchetto.
- Fare clic con il pulsante destro del mouse sul progetto di packaging e scegliere Set As Startup Project.
- Fare clic con il pulsante destro del mouse sul project WinForms e scegliere Edit Project File.
- Eliminare
<WindowsPackageType>None</WindowsPackageType>, salvare e chiudere. - Nell'elenco a discesa Piattaforme di soluzioni selezionare x64 (invece di Qualsiasi CPU).
- Verificare che sia possibile compilare ed eseguire.
Dopo aver creato il pacchetto dell'app WinForms, è possibile chiamare le API che richiedono l'identità del pacchetto. Pertanto, aprire Form1.cs (usando il comando Visualizza codice ) e modificare il gestore eventi in modo che sia simile al seguente:
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);
}
Compilare ed eseguire di nuovo. Fare clic sul pulsante e confermare che venga visualizzata una notifica toast. Quando viene chiamato da un processo che non dispone dell'identità del pacchetto in fase di esecuzione, le API di notifica generano un'eccezione.
Nota
I passaggi descritti in questa sezione illustrano come creare un' app inclusa nel pacchetto. Un'alternativa consiste nel creare una app inclusa nel pacchetto con posizione esterna. Per un promemoria di tutte queste condizioni, vedere Vantaggi e svantaggi della creazione di pacchetti dell'app.
Argomenti correlati
- Windows Forms (WinForms)
- Installare gli strumenti per Windows App SDK
- Guida alla distribuzione di Windows App SDK per le app dipendenti dal framework confezionate con posizione esterna o non confezionate
- Ultimi download per Windows App SDK
- Vantaggi e svantaggi della creazione di pacchetti per l'app
- Usa il runtime di Windows App SDK per le app confezionate con una posizione esterna o non confezionate
- Architettura di runtime
- Funzionalità che richiedono l'identità del pacchetto