InvalidCastException para dos objetos del mismo tipo

Tengo este extraño problema que no puedo manejar por mí mismo. Una clase en el modelo de mi proyecto mvp diseñado como singleton causa una InvalidCastException. La fuente del error se encuentra en esta línea de código donde el objeto deserializado se asigna a la variable de instancia de la clase:engineObject = (ENGINE)xSerializer.Deserialize(str); Ocurre cada vez que intento agregar uno de mis UserControls a un Formulario o a una UC diferente. Todos mis UC tienen un presentador especial que accede a la variable de instancia mencionada anteriormente de la clase singleton. Esto es lo que obtengo cuando intento agregar una UC en algún lugar:

'System.TypeInitializationException: el inicializador de tipo para' MVP.Model.EngineData 'produjo una excepción. ----> System.InvalidCastException: [A] Engine no se puede convertir en [B] Engine. El tipo A se origina en 'MVP.Model, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null' en el contexto 'LoadNeither' en la ubicación '[...] \ AppData \ Roaming \ Microsoft \ VisualStudio \ 9.0 \ ProjectAssemblies \ uankw1hh01 \ MVP.Model.dll '. El tipo B se origina en 'MVP.Model, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null' en el contexto 'LoadNeither' en la ubicación '[...] \ AppData \ Roaming \ Microsoft \ VisualStudio \ 9.0 \ ProjectAssemblies \ u_hge2de01 \ MVP.Model.dll '...

Entonces, ¿de alguna manera tengo dos ensamblajes y no se accede a ellos desde la carpeta de mi proyecto, sino desde una carpeta temporal de VS? Busqué en Google mucho y solo encontré esto:Excepción IronPython: [A] Persona no se puede lanzar a [B] Persona. Se ofrece una solución, pero primero se trata de IronPhyton y, en segundo lugar, no sé dónde usarla en mi proyecto.

Sería genial, si pudieras ayudarme aquí :-) gracias