Nota: Este post ha sido importado de mi blog de geeks.ms. Es posible que algo no se vea del todo "correctamente". En cualquier caso puedes acceder a la versión original aquí
Imaginaos que teneis una solución con varios proyectos, y que estos compilan en un directorio concreto, llamésmole Q\:bin.
En otra solución teneis varios proyectos más, con referencias a los assemblies que estan en Q:bin (no son referencias de proyecto porque estan en distintas soluciones).
Y ya puestos, imaginad también que estáis usando Code Contracts. Y cuando compilais los proyectos de la segunda solución visual studio se descuelga con un bonito error:
Unresolved assembly reference not allowed: assembly_que_esta_en_Q_bin.dll_
y el “fichero” que genera el error es ccrewrite
.
La solución es ir al proyecto que no compila, abrir sus propiedades y en la pestaña Code Contracts añadir el directorio Q:bin a la entrada “Lib Paths”:
Con esto el proyecto debería funcionar correctamente!
La solución gracias a http://social.msdn.microsoft.com/Forums/en-US/codecontracts/thread/7225dc8d-7005-4da7-8a39-688e5b766434
Saludos!
pd1: Que hace la entrada “Lib Paths” de la pestaña Code Contracts? Pues añade los directorios especificados al parámetro /libpaths: de ccrewrite
pd2: Que es ccrewrite? Es el MSIL rewriter de code contracts, el encargado de “mover” todas las precondiciones al principio de todo de nuestro método y de “mover” las postcondiciones justo al final de nuestro método.