2011-03-15 11 views
8

Tengo una aplicación que hace referencia a una DLL de Microsoft (Servicios web de Exchange). En mi prueba unitaria, quiero reemplazar el DLL de Microsoft con un simulacro.Burlando de una DLL de Microsoft

Lo que funciona con otros DLLs, no funciona con esta DLL, como consiga una excepción

definición de manifiesto del ensamblado ubicado no coincide con la referencia de ensamblado

I verificado que tiene el mismo versión de ensamblaje, pero vi que el DLL de Microsoft está firmado digitalmente, por lo que tiene un PublicKeyToken. ¿Podría ser esto lo que mi Aplicación está buscando? ¿Una DLL similarmente firmada?

¿Hay alguna manera de hacer referencia a una DLL sin requerir su publickeytoken?

Gracias

+1

Qué tal: msvcr71d.dll es tan feo que incluso rundll32.exe dice que tiene una mala imagen !!! ¿Derecha? ¿Derecha? Lo siento mucho ... – diceguyd30

Respuesta

13

No se puede simular una DLL firmada. (Si pudieras, serás contratado por la mafia ...)

Simula el código que accede al código en este dll.

Crea una fachada (si no la tienes), que envuelve el acceso a los métodos en Exchange dll. Luego, en sus pruebas, puede proporcionar una fachada simulada.

Es una buena práctica de diseño proteger su código de cualquier código de terceros (ensambles, servicios web, control) por medio de fachadas/envoltorios. Esto minimiza el riesgo de impacto si el código de un tercero cambia, es decir. actualizando a una versión más nueva de dll (los cambios requeridos afectarán solo la fachada) y ayuda con las pruebas.

+5

+1 por escribir una fachada alrededor de la DLL –

+0

Puede simular dll del sistema con algún truco, por ejemplo PEX hace esto. –

+0

@remco - ¿Te refieres a http://research.microsoft.com/en-us/projects/moles/? –