Nel mio progetto, ho un problema con la sua gerarchia di dipendenze. Uso una libreria (WriteableBitmapExtensions) nel mio codice e ho un'altra libreria di terze parti che utilizza anche WriteableBitmapExtensions. Solo l'altra libreria è fortemente legata a una specifica versione precedente e il mio codice ha bisogno della funzionalità nella sua versione più recente.Risoluzione/utilizzo di più versioni di assembly da dipendenze di terze parti
Ecco una rappresentazione delle dipendenze:
Non ci sono domande simili & soluzioni, ma si risolvono con associazione di assembly in fase di esecuzione tramite un file di configurazione, ma non credo che ciò sia compatibile per un'applicazione Silverlight.
Referencing 2 different versions of log4net in the same solution
Using different versions of the same assembly in the same folder
3rd party libraries refer to different versions of log4net.dll
How to deal with multiple versions of dependencies?
Così, c'è un modo per risolvere queste diverse versioni di dipendenze di montaggio in un contesto di Silverlight? Se non c'è, immagino le mie opzioni sono:
1) Molto probabilmente posso convincere il fornitore della libreria di terze parti ad aggiornare l'uso dell'ultima versione di WriteableBitmapExtensions, ma preferirei non dipendere da li tengono aggiornati. Soprattutto perché il progetto WriteableBitmapExtensions è ancora in fase di aggiornamento e spesso sfruttiamo le loro nuove funzionalità.
2) Dal momento che WriteableBitmapExtensions è open-source, suppongo posso ricompilare la sua fonte di una nuova assemblea "MyWriteableBitmapExtensions" e l'uso che nel mio codice sorgente. Ricontrerò di nuovo questo problema se due librerie di terze parti fanno riferimento a versioni diverse di WriteableBitmapExtensions.
Sospetto che andrò con l'opzione 2, ma mi piacerebbe sapere se c'è un modo migliore per farlo (come il binding dell'assembly di runtime nelle altre domande) prima di commettere/refactoring. Grazie!
Ho solo guardato il progetto WriteableBitmapExtensions dopo aver scritto questa risposta e ora mi rendo conto che quello che hai chiamato __v1__ è in realtà quasi una versione _pre-beta_, visto che l'ultima è __v1 beta__. Quindi l'opzione (1) diventa più un'opzione - il venditore di terze parti dovrebbe essere piuttosto felice di rileggere con una versione non beta quando sarà disponibile. –
Ho modificato questa risposta di nuovo perché sembra che Silverlight non supporti il binding dell'assembly :-( –
Sì, anche questo era il punto di partenza: mi aspetto che questo particolare fornitore si aggiorni, sono piuttosto bravi in questo modo. Ho delle preoccupazioni riguardo ad altre librerie in generale e mi chiedevo se esistesse una soluzione completa/corretta (come l'assembly binding), soprattutto perché l'intera opzione "open-source, ricompilare" potrebbe non essere sempre disponibile, ma sembra che non ci possa essere be. Grazie per la nota di aggiornare i GUID e il nome sicuro dell'identità, potrei aver trascurato quelli. –