In questi ultimi giorni abbiamo ricevuto alcune segnalazioni di malfunzionamento del player video utilizzato per la visualizzazione degli screencast e delle registrazioni delle conferenze; l'errore si verificava al termine del download del codice XAML dell'interfaccia grafica del player, al momento della chiamata del metodo createFromXaml lanciando un codice 2207 per tale metodo.
Come per ogni segnalazione di bug il punto di partenza è sempre cercare di riprodurre nell'ambiente di sviluppo il medesimo comportamento segnalato dagli utenti, in modo da poter intervenire con gli strumenti di debug e adottare le dovute correzioni al codice, ed è qua che sono cominciate le prime perplessità: in nessuno dei miei ambienti sono mai riuscito ad ottenere l'errore ed anche a Daniele l'errore si è mai verificato.
Il messaggio di errore non mi ha aiutato molto, ma il fatto che si verificasse in corrispondenza di createFromXaml mi ha fatto pensare che [i]in certe circostanze[/i] lo XAML non fosse formalmente corretto e che il player non riuscisse ad effettuarne il parsing.
Umh, è perchè non a tutti gli utenti, e perchè non con tutti i plugin? Già, i plugin!
Paradossalmente solo in quel momento mi sono ricordato che esistono in pratica due major version del plugin di Silverlight, la 1.0 e la 2.0 in beta, e guarda caso su tutti gli ambienti dov'era istallata la 2.0beta il player funzionava correttamente, quindi ho pensato che fosse qualcosa legato alla versione 1.0.
Ho preso una macchina virtuale XP pulita ed ho istallato il plugin 1.0, sono riuscito a riprodurre l'errore e dopo alcuni test mi sono reso conto che tale versione del plugin non gradisce l'uso di namespace custom che Expression Blend 2.5 inserisce nel markup XAML per registrare alcune informazioni utili a se stesso, si tratta dei namespace:
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
e di:
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Blend 2.5 usa questi namespace per creare proprietà custom sugli oggetti, come ad esempio d:IsHidden="True" che utilizza per "ricordarsi" quali elementi visualizzare nell'interfaccia visuale del programma.
Rimossi questi tutto è tornato a funzionare correttamente; in sostanza è importante fare attenzione al momento della pubblicazione del codice XAML modificato in Blend 2.5 ricordandosi di ri-attivare la visibilità degli elementi nell'interfaccia e di rimuovere l'attributo mc:Ignorable="d" dal Canvas principale.
Dopo tutto, è sempre una versione di preview!
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Take Me Back e lo sviluppo con Windows Phone 7 in OzoSoftware, il 20 dicembre 2010 alle 09:30
- Blocco dell'interfaccia alla chiusura della ChildWindow in Silverlight, il 27 agosto 2010 alle 15:31
- Attivare l'input da tastiera sulla beta dell'emulatore di Windows Phone 7, il 13 luglio 2010 alle 17:13
- Endpoint con path relativi anche nelle applicazioni Silverlight 4.0, il 3 luglio 2010 alle 19:13
- Inside ModelVirtualCasting #8: Applicazioni Silverlight sul client (OOB) , il 20 giugno 2010 alle 20:03
- Expression Blend e Silverlight a .NET Campus 2010, il 3 febbraio 2010 alle 18:58