Windows Phone 7 SDK Beta upgrade 1
Oggi giornata di upgrade dei vari progetti e demo creati con la versione di Aprile degli strumenti di sviluppo.
Il primo progetto, già pubblicato nella sezione media di ThinkMobile.it e oggetto di alcuni articoli usciti sul sito ThinkMobile.it, IoProgrammo e Html.it, presenta queste problematiche.
Aprendo il progetto che utilizzava il controllo WebBrowser il designer non si apre e alcune delle reference risultano “rotte”.
Proviamo a risolvere i problemi: nella versione Beta hanno modificato molti assembly e namespace spostando, come spesso accade, le classi durante il refactoring.
Reference
Il progetto April CTP si presentava così:
Per prima cosa i seguenti assembly sono stati unificati in un’unica dll denominata Microsoft.Phone:
Microsoft.Phone.Controls
Microsoft.Phone.Controls.Navigation
Microsoft.Phone.Controls.WebBrowser
Microsoft.Phone.Controls.WebBrowserInterop
Microsoft.Phone.Shell
Microsoft.Phone.Notification
Microsoft.Phone.Execution
Microsoft.Phone.Info
Microsoft.Phone.Tasks
Microsoft.Devices
Occorre quindi eliminare tutte le reference verso i vecchi assembly e aggiungere la reference verso i nuovi.
Sono stati notevolmente semplificate anche le dll sia come numero che come namespace. Questo l’elenco delle nuove librerie (da notare in versione 7.0.0.0):
Visto che l’applicazione presentava una semplice finestra con il controllo web browser abbiamo pochi errori nella parte XAML:
Il primo problema deriva ancora dai assembly referenziati nel file MainPage.xaml. Per risolvere a tappeto il problema consiglio di cercare le seguenti definizioni nei vari file xaml e rimpiazzarle con quanto segue:
Cercare:
clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Navigation
Rimpiazzare con:
clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone
Cercare:
clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.WebBrowser
Rimpiazzare con:
clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone
Cercare:
clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone.Shell
Rimpiazzare con:
clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone
Cercare:
clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls
Rimpiazzare con:
clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone
Il terzo problema riguarda il file app.xaml in quanto le risorse nella versione di aprile erano state inserite direttamente nel file. In questa versione sono inserite come risorse nelle librerie. Per prima cosa occorre rimuovere la sezione <App.Resources> e poi occorre sostituire nei vari xaml delle pagine alcuni nomi di risorse.
Anche in questo caso, Jamie Rodriguez del team di sviluppo, come segnalato da Mighell nel suo post, conviene fare un find/replace:
PhoneTextPageTitle1Style -> PhoneTextNormalStyle
PhoneTextPageTitle2Style –> PhoneTextTitle1Style
PhoneTextApplicationNameStyle –> PhoneTextNormalStyle
PhoneTextTitleNameStyle –> PhoneTextTitle1Style
Ci sono altre incompatiilità a cui dedicheremo un post non appena faremo l’upgrade reale.
Nel nostro primo progetto è sufficiente fare Reload Designer per ottenere il nuovo designer con il “vecchio” form:
F5 e via:
Ultimo punto che conviene fixare è il file di definizione del deploy WMAppManifest.xml. Visto che ci sono varie modifiche da fare il consiglio è ricreare il progetto con lo stesso nome in una directory temporanea e copiare il contenuto di questo file direttamente sul progetto reale.