Attenzione allo XAML modificato con Blend 2.5 per Silverlight 1.0

di Alessio Leoncini, in Silverlight,

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!

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese