Scegliere il percorso di migrazione

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

Diagramma di flusso dell'albero delle decisioni che mostra tre percorsi di migrazione: eseguire l'aggiornamento alle .NET moderne, modernizzare sul posto o passare a WinUI 3.

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

  1. Usare GitHub Copilot aggiornamento per valutare la soluzione e pianificare l'aggiornamento.
  2. Risolvere i problemi di dipendenza: la maggior parte dei pacchetti NuGet ha versioni .NET moderne.
  3. Risolvere i blocchi di migrazione comuni , ad esempio WCF o System.Configuration.
  4. 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

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.

Vedere anche