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.
Quando si dispone di un'app desktop macchine virtuali Windows, WinForms o Win32 esistente, sono disponibili tre opzioni generali per l'avanzamento. Questa guida consente di decidere quale percorso si adatta al progetto.
Importante
Non è necessario eseguire la migrazione a WinUI 3. macchine virtuali Windows e WinForm sono completamente supportati nei .NET moderni e continuano a ricevere gli aggiornamenti delle funzionalità. Molte app sono al meglio gestite eseguendo l'aggiornamento alle .NET moderne e aggiungendo funzionalità di SDK per app di Windows in modo incrementale, senza modificare il framework dell'interfaccia utente.
Per le definizioni dei termini usati in questa pagina, vedere Terminologia della migrazione.
Tip
Prima di modificare il codice, usare Pianificare la modernizzazione con un assistente di intelligenza artificiale per fare in modo che un assistente alla codifica di intelligenza artificiale analizzi il progetto e crei una bozza di piano incrementale in questa documentazione.
Panoramica delle decisioni
Tre percorsi
| Path | Cosa cambia | Migliore per | Livello di rischio |
|---|---|---|---|
| Aggiornamento in loco | Runtime (.NET Framework → .NET moderno), formato di file di progetto, alcuni pacchetti NuGet | App che funzionano bene oggi e necessitano di supporto .NET a lungo termine, miglioramenti delle prestazioni o accesso alle API .NET moderne | Basso-Medio |
| Modernizzare in loco | Niente: si aggiungono SDK per app di Windows, API WinRT o pacchetti MSIX all'app esistente | App che necessitano di funzionalità specifiche della piattaforma (notifiche, widget, intelligenza artificiale) senza modificare il framework dell'interfaccia utente | Low |
| Passare a WinUI 3 | Framework dell'interfaccia utente, spazi dei nomi, controlli, modello del ciclo di vita dell'app | App in cui il livello dell'interfaccia utente necessita di un rinnovamento, sia che si esegua il porting incrementale delle viste sia che si avvii un nuovo progetto | Medio-alto |
Note
Questi percorsi non si escludono a vicenda. Una sequenza comune è: eseguire l'aggiornamento da .NET Framework a .NET moderno, quindi modernizzare aggiungendo SDK per app di Windows funzionalità e successivamente eseguire la migrazione di singole visualizzazioni a WinUI 3.
Criteri decisionali
Usare questa tabella per valutare il percorso più adatto al progetto. Assegnare un punteggio a ogni riga e vedere la colonna con le risposte più favorevoli.
| Criterio | Aggiornamento in situ | Modernizzare sul posto | Passare a WinUI 3 |
|---|---|---|---|
| Dimensione del progetto (soluzioni con 10 o più progetti) | ✅ Gli strumenti automatizzati gestiscono soluzioni multiprogetto | ✅ Nessuna ristrutturazione del progetto necessaria | ⚠️ Richiede la pianificazione della migrazione per progetto |
| dipendenze di .NET Framework | ✅L'obiettivo principale è abbandonare .NET Framework | N/D — l'app rimane nel runtime corrente | ⚠️ Deve eseguire prima l'aggiornamento alla .NET moderna |
| Servizi WCF o ASMX | ⚠️ Richiede la migrazione a CoreWCF | ✅ Nessun impatto sul livello di servizio | ⚠️ È necessaria la stessa migrazione WCF |
| Interoperabilità COM | ⚠️ Testa accuratamente — la maggior parte degli scenari di interoperabilità COM funziona nelle versioni moderne di .NET | ✅ Nessuna modifica necessaria | ⚠️ La maggior parte dell'interoperabilità COM funziona; alcune API WinRT richiedono l'inizializzazione HWND |
| Controlli dell'interfaccia utente di terze parti (Telerik, DevExpress, Syncfusion) | ✅ La maggior parte dei fornitori supporta la versione moderna di .NET | ✅ Nessuna modifica dell'interfaccia utente | ❌ I fornitori devono offrire versioni di WinUI 3: verificare la compatibilità |
| Capacità del team | Basso-medio: GitHub Copilot l'aggiornamento può essere utile, ma è necessario esaminare le dipendenze e convalidare il risultato | Basso : incrementale, nessuna scadenza | Elevata: richiede lo sviluppo e il test dell'interfaccia utente |
| Progettazione XAML di Visual Studio | ✅ Supportato per macchine virtuali Windows su .NET moderno | ✅ Supportato | ❌ Non ancora disponibile per WinUI 3 |
| Supporto .NET a lungo termine | ✅ Miglioramenti del supporto e delle prestazioni LTS | ⚠️ .NET Framework 4.8 è supportato ma riceve solo correzioni di sicurezza | ✅ WinUI 3 funziona con la versione moderna di .NET (.NET 6 o versione successiva) |
Percorso 1 : aggiornamento sul posto (.NET Framework → .NET moderno)
Questo percorso mantiene il framework dell'interfaccia utente (macchine virtuali Windows o WinForms) e sposta il runtime da .NET Framework a .NET moderno (attualmente .NET 10 LTS). È l'opzione a rischio più basso per la maggior parte delle app aziendali.
Quando scegliere questo percorso
- L'app funziona bene su macchine virtuali Windows o WinForms e vuoi mantenerla così.
- È necessario un supporto continuo .NET, miglioramenti delle prestazioni o accesso alle API di .NET moderne (Span<T>, System.Text.Json, tipi di riferimento nullable).
- Si intende modernizzare successivamente aggiungendo funzionalità di SDK per app di Windows.
Come iniziare
- Usare GitHub Copilot aggiornamento per valutare la soluzione e pianificare l'aggiornamento.
- Risolvere i problemi di dipendenza: la maggior parte dei pacchetti NuGet ha versioni .NET moderne.
- Risolvere i blocchi di migrazione comuni , ad esempio WCF o
System.Configuration. - Testare accuratamente, in particolare l'interoperabilità COM e i controlli di terze parti.
Strumenti di intelligenza artificiale
GitHub Copilot aggiornamento può essere utile per la valutazione, la pianificazione, le modifiche al codice e la convalida. Esaminare le raccomandazioni e convalidare ogni modifica nell'app.
Percorso 2 - Modernizzare sul posto
Questo percorso aggiunge funzionalità Windows moderne all'app macchine virtuali Windows, WinForms o Win32 esistente senza modificare il framework dell'interfaccia utente.
Quando scegliere questo percorso
- È necessaria una funzionalità di Windows specifica (notifiche, widget, Windows AI Foundry).
- Si vuole sostituire il programma di installazione con MSIX per la disinstallazione pulita e l'aggiornamento automatico.
- L'app è in .NET Framework e non è possibile eseguire l'aggiornamento al momento.
Come iniziare
Vedi Modernizzare le app desktop per i tre approcci di modernizzazione (API WinRT, SDK per app di Windows NuGet, creazione di pacchetti MSIX).
Percorso 3 - Passare a WinUI 3
Questo percorso sposta il livello dell'interfaccia utente dell'app in WinUI 3, il framework dell'interfaccia utente nativo per le app di Windows moderne. È possibile convertire le visualizzazioni esistenti in modo incrementale o avviare un nuovo progetto WinUI 3 e trasferire la logica di business, in entrambi i casi, la destinazione è la stessa.
Quando scegliere questo percorso
- Si vuole un'interfaccia utente moderna con Fluent Design, modalità scura e supporto di input moderno.
- Il livello dell'interfaccia utente della tua app ha bisogno di un rinnovamento.
- È possibile investire nel tempo di sviluppo e test dell'interfaccia utente.
Come iniziare
- Eseguire la migrazione dei modelli di app macchine virtuali Windows a WinUI 3 — mapping dei controlli, XAML e threading
- Eseguire la migrazione di app macchine virtuali Windows a WinUI 3 con intelligenza artificiale - Migrazione assistita dall'intelligenza artificiale con GitHub Copilot
- Eseguire la migrazione dalla piattaforma UWP alla SDK per app di Windows: se il punto di partenza è UWP
Importante
Un'app WinUI 3 in C# richiede .NET moderne e non può essere destinato a .NET Framework. Se l'app C# è in .NET Framework, è necessario eseguire prima l'aggiornamento (Percorso 1), quindi eseguire la migrazione dell'interfaccia utente. Un'app WinUI 3 C++/WinRT non richiede .NET.
Blocchi di migrazione comuni
Questi problemi spesso bloccano o complicano gli aggiornamenti e le migrazioni. Ognuno richiede una mitigazione specifica.
| Ostacolo | Impatto | Mitigation |
|---|---|---|
| Servizi WCF | Il server WCF non è disponibile nelle .NET moderne. Il client WCF è disponibile tramite pacchetti System.ServiceModel. | Eseguire la migrazione di WCF sul lato server a CoreWCF o gRPC. WCF sul lato client funziona su .NET moderne. |
| Servizi Web ASMX | ASMX non è disponibile nelle .NET moderne. | Sostituire con ASP.NET Core Web API o endpoint di API minime. |
System.Configuration (app.config) |
ConfigurationManagerfunziona su .NET moderne tramite un pacchetto NuGet di compatibilità, ma non supporta tutte le funzionalità. |
Per il nuovo codice, usare il modello Opzioni con appsettings.json. Eseguire la migrazione incrementale delle impostazioni esistenti. |
| Interoperabilità COM | La maggior parte dell'interoperabilità COM funziona sui .NET moderni. Alcuni scenari che coinvolgono il modello di apartment threading o COM senza registrazione devono essere testati. | Testare in anticipo le funzionalità dipendenti da COM. Usare ComWrappers per il nuovo codice di interoperabilità. |
| Controlli dell'interfaccia utente di terze parti | I fornitori di controlli potrebbero non supportare ancora WinUI 3. La maggior parte supporta le .NET moderne per macchine virtuali Windows e WinForms. | Prima di iniziare, vedere la documentazione del fornitore per il supporto di .NET e WinUI 3 moderni. Telerik, DevExpress, Syncfusion e Infragistics pubblicano tutti matrici di compatibilità. |
| progetti Visual Basic | Visual Basic è supportato per macchine virtuali Windows e WinForms nei .NET moderni, ma il flusso di lavoro di aggiornamento GitHub Copilot non supporta completamente i progetti Visual Basic. | Seguire le linee guida per l'aggiornamento manuale di macchine virtuali Windows o Windows Forms e convalidare ogni progetto. |