Press "Enter" to skip to content

Creare un’applicazione WPF per gestire Dati su un database SqlServer – parte 9 Migriamo a .net 5

Prima di proseguire questa serie, visto che lo scorso 10 novembre è nato .net 5.0 ho deciso di migrare l’applicazione sul nuovo framework, principalmente per vedere come funziona WPF su .net core e soprattutto per verificare con voi che leggete come cambiano alcune cose ma fondamentalmente le applicazioni Desktop possono passare al futuro di .net con poche modifiche.

Attenzione!!! Windows Forms e WPF funzionano solo su piattaforma Microsoft, passando a .net 5.0 non possiamo automaticamente installare su Linux o su Mac.

La prima e più importante cosa da fare per la migrazione a .net 5.0 (ovvero .net core) è passare ai nuovi progetti .net multipiattaforma. cosa significa in parole povere? Creare un nuovo progetto WPF e copiarvi dentro tutto quello che c’era nel vecchio fatto salvo i file di progetto e di configurazione.

Vediamo come ho fatto:

Per prima cosa ho rimosso il progetto WpfPubs dalla Soluzione ed ho rinominato la sua cartella WpfPubs_old in modo da poter creare un nuovo progetto con lo stesso nome.

La mia solution quindi non contiene alcun progetto. Adesso procedo a generare un nuovo progetto .net 5.0

Per andare sul sicuro, visto che è iniziato un nuovo anno, ho copiato la soluzione vuota su una cartella nuova, ma voi potete lasciarla dove era prima sulla vostra cartella.

 

Dalla solution, andiamo sul menu contestuale e selezioniamo Add…> New Project…

 

Siccome i progetti WPF sono quelli che uso di più nella mia finestra di aggiunta progetti li trovo nei Template recenti, se non li trovate li, usate la ricerca in alto scrivendo WPF dovrebbero apparire tutti sulla destra.

Ricordate di selezionare WPF App (.NET) che è quella che usa .net Core o .net 5.0 mentre le applicazioni con il framework standard hanno come dicitura WPF App (.net Framework).

 

Generiamo il progetto con il nome del precedente (per questo vi ho detto di rinominare la cartella del vecchio progetto se non spostate il tutto su una nuova cartella.)

 

Il nuovo progetto è leggermente diverso dai progetti WPF a cui siamo abituati, perché manca la cartella properties, References è sostituito da Dependencies, e AssemblyInfo.cs si trova sulla cartella root di progetto.

 

Le property di progetto sono comunque sempre al loro posto e sono accessibili dal menu contestuale del nodo del progetto.

 

Aprendo le property possiamo vedere come il template è ancora automaticamente predisposto per .net core 3.1 pertanto dobbiamo andare a modificare il framework per utilizzare .net 5.0

 

Selezioniamo quindi il framework .net 5.0 dalla combobox, ma c’è ancora una modifica manuale da fare sul progetto, che nel nuovo formato è accessibile e modificabile direttamente.

Se clicchiamo sul progetto, ed abbiamo attivato la preview dell’oggetto selezionato (il flag in alto a destra sulla toolbar del solution explorer come nell’immagine qui sopra) sarà visualizzato il contenuto del file csproj. Quello che non viene ancora modificato automaticamente da visual studio, è la prima riga, infatti per .net 5.0 dobbiamo sostituire l’Sdk con Microsoft.NET.Sdk.

 

A questo punto il progetto è pronto, pertanto cancelliamo la classe MainWindow che è stata generata e procediamo ad importare i file del progetto originale.

Utilizzando Add…>Existing Item… andiamo a selezionare i vari file dalla cartella del vecchio progetto per aggiungerli a quello appena generato, Conservo solamente App.xaml e App.cs che copierò ed incollerò da quelli del vecchio progetto.

I primi 2 files che copio sono l’Icona di progetto e la chiave per la firma del progetto, quindi sostituisco l’icona e firmo il progetto. 

importati i file sulla cartella di progetto, generiamo le sottocartelle che ospitano il resto delle classi.

Procediamo ad importare i vari file delle classi.

Come indicato sul box dell’immagine, fate attenzione che i file immagine, al contrario di quanto accade sui progetti WPF normali, non vengono automaticamente inserite come Resource modalità che fa in modo che le immagini siano embedded nel file eseguibile, il metodo standard per le icone del programma. Pertanto va fatta la modifica manualmente.

 

Una volta aggiornati Build Action e Copy To Output directory, le immagini vengono correttamente gestite.

 

Attenzione quando importate i file XAML, per fare importare correttamente anche il file .cs ad essi collegati è necessario selezionare che stiamo importando lo xaml e soprattutto importarli uno per volta. in questo modo il file xaml e il suo .cs saranno importati e collegati fra loro correttamente.

 

Una volta importati tutti i file, proviamo a compilare e appariranno gli errori qui sopra. Perché ci manca una libreria normalmente compresa ovvero System.Data.SqlClient che dobbiamo aggiungere utilizzando nuget.

 

Apriamo quindi il menu Manage NuGet Packages per aprire la finestra di ricerca.

 

Andiamo su Browse, indichiamo sqlclieent sul filtro e selezioniamo la libreria System.Data.Sqlclient. Fatto questo ricompilando gli errori spariranno e l’applicazione sarà eseguibile.

Aprendo la lista degli autori verifichiamo che anche la gestione del database funziona correttamente.

Abbiamo quindi migrato la nostra applicazione da .net 4.6.2 a .net 5.0

Qui sotto il link per scaricare il codice a corredo relativo a questa versione del progetto.