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