Accadde un giorno che avevo un piccolo (e vecchio) CMS con un bug da fixare e ho avuto l'idea di aggiornare il motore di persistenza, che usava NH 1.2.0 alla nuovissima 2.0.1. Scarico quindi i due progetti NHibernate.Core e NHibernate.Caches ma... niente! Quest'ultima non ne voleva sapere di andare a causa di una reference verso la versione 2.0.0 di NHibernate che purtroppo non era più disponibile per il download.
Premetto che ad oggi il problema è stato risolto, ora NHibernate.Caches punta alla versione corretta, ma in quel frangente mi sono trovato abbastanza spaesato. Le possibili soluzioni erano:
- Ricompilare tutto NHibernate, modificando il numero di versione a 2.0.0, ma non mi piaceva l'idea
- Scaricare i sorgenti della Cache e modificare la reference, ma questi non erano disponibili se non come trunk SVN, e avrei in questo modo rischiato di portare in produzione codice non ancora ufficialmente rilasciato
- Utilizzare l'Assembly Binding Redirection del CLR
- Disassemblare l'assembly NHibernate.Caches e modificare la reference per farlo puntare a NH 2.0.1
A dispetto delle apparenze, la soluzione 4 è in assoluto la più veloce e semplice e infatti è proprio quella che ho scelto.
I passi sono estremamente banali:
- Si apre l'assembly con ILDASM
- Si seleziona File -> Dump, avendo cura di impostare a checked tutte le checkbox proposte
- A questo punto basta aprire il file .IL generato con un qualsiasi editor testuale e cercare ".assembly extern" per posizionarsi nella sezione del MSIL che contiene l'indicazione delle reference
- Modificare manualmente la reference alla versione voluta e salvare
- Ricompilare il file IL con l'istruzione a riga di comando:
ILASM nomeFileMSIL.IL /DLL /OUTPUT=nomeAssembly.dll
Et voilà, it works!
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Azure Mobile Services a Milano, il 7 gennaio 2013 alle 14:25
- Windows 8 su MacBook Pro, la mia esperienza, il 20 agosto 2012 alle 08:26
- Un libro davvero bello su Visual Studio LightSwitch, il 28 marzo 2012 alle 19:48
- I miei Community Days 2012..., il 20 febbraio 2012 alle 09:00
- PhoneGap e Titanium, esiste davvero il write once run anywhere su mobile?, il 12 gennaio 2012 alle 09:30
- ASPItalia ti premia con Visual Studio 2010 Ultimate + MSDN Subscription!, l'1 settembre 2010 alle 11:52