Caricare assembly non referenziati con MEFedMVVM

Supponiamo che…

State sviluppando un’applicazione Desktop con WPF.
State utilizzando il pattern MVVM.
State usando MEFedMVVM (e se non lo state facendo dateci un occhio) per associare i ViewModel alle View e per disaccoppiare (in maniera semplice e veloce) i contratti dei vostri servizi dalle implementazioni.

Quest’ultime stanno su un progetto che non referenziate, e che non volete referenziare, da nessuna parte…quindi MEFedMVVM non è assolutamente in grado di soddisfare la richiesta dell’implementazione di uno di questi servizi.

Come risolviamo questo problema?
Dando un occhio ai sorgenti di MEFedMVVM, si scopre che lui tenta di caricare tutto quello che trova nella cartella Extensions (ovviamente se esiste), posta all’interno della BaseDirectory dell’AppDomain corrente. Per cui possiamo creare questa directory e “ficcarci” dentro il nostro assembly contenente i servizi…ed il gioco è fatto Sorriso

Failed to complete setup of assembly (hr = 0x8007000b). Probing Terminated

Qualche giorno fa stavo letteralmente giocando con le proprietà di alcuni progetti e, ad un certo punto, mi è spuntata un’exception di questo genere…

image

Molto probabilmente la prima cosa che pensate appena vi trovate davanti sta roba (senza aver toccato una riga di codice) è: “Fantastico! Che caz… ho fatto?” Googlando un pò si trova velocemente la soluzione.. http://www.williamwishart.co.uk/post/2009/01/26/Failed-to-complete-setup-of-assembly-%28hr-3d-0x8007000b%29.aspx

Ed infatti quello che avevo fatto io era stato proprio cambiare il Platform Target su un progetto (settandolo a Any CPU) che referenziava un altro progetto, e su quest’ultimo lasciarlo a x86…