Assistendo Simone nell'impresa di creare il suo Emoticon Formatter, mi sono reso conto che si potrebbe incontrare qualche difficoltà la cui soluzione non è immediata.

Per poter creare un formatter è necessario referenziare l'assembly Elite.IMHO.Data.dll che si può trovare nella directory di IMHO. Tale assembly attualmente è alla versione 1.0.1787.933 ed è firmato. Tuttavia è abbastanza scomodo lavorare su un formatter usando la versione installata del programma, perchè si è costretti a copiare il compilato del proprio progetto nelle cartelle di IMHO ogni volta che si vuole testarlo. Pur potendo automatizzare questa operazione, mediante un post build event, è evidente che così si perdono tutte le potenzialità del debugger.

Perciò, come è successo a Simone, può venire la tentazione, peraltro legittima, di scaricare il sorgente di IMHO e di aggiungere il proprio progetto per essere facilitati nel debug. Questo naturalmente è fattibilissimo, anzi addirittura consigliabile, ma occorre fare attenzione ad un particolare che non è immediatamente evidente. Ricompilando il progetto IMHO, ci si troverà nella condizione di far avanzare la versione dell'assembly Elite.IMHO.Data, che è contrassegnata con 1.0.*.

Finchè si lavora al formatter questo non è un problema, ma se al termine del lavoro di prendono gli assembly e li si copia nelle cartelle di destinazione del programma installato si scoprirà che essi generano una eccezione, anche piuttosto oscura, dato che il suo messaggio riporta esclusivamente un punto di domanda "?". Quello che è successo è che il runtime del framework ha generato una FileLoadException perchè la versione dell'assembly Elite.IMHO.Data che il formatter richiede è diversa da quella installata.

Risolvere questo problema è banale. E sufficiente aprire il file AssemblyInfo.cs del progetto Elite.IMHO.Data, trovare l'attributo AssemblyVersion e fissare la versione a 1.0.1787.933. In questo modo il formatter compilato quando sarà posto nelle directory del programma installato sarà perfettamente a suo agio.

Sarà mia cura nelle prossime versioni, oltre a cercare di non rompere la compatibilità all'indietro, anche di inserire le necessarie configurazioni nell'app.config per redirigere i formatter che richiedessero versioni precedenti dell'assembly, su quelli nuovi.

powered by IMHO