[Code Contracts] ccrewrite – “Unresolved assembly reference not allowed”

 ·  ☕ 1 min  ·  ✍️ eiximenis

    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”:

    image

    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.

    Si quieres, puedes invitarme a un café xD

    eiximenis
    ESCRITO POR
    eiximenis
    Compulsive Developer