Code Contracts en VS2012 – Parte 1

La utilización de Code Contracts en VS puede ser confusa, antiguamente en las versiones de VS 2008 Code Contracts no estaba incluido en los ensamblados del proyecto y aunque sucedía esto, todo era un poco mas claro, había que bajar el add-in desde la página de Research de Microsoft y asunto arreglado. Pero no a todos nos gustaba la idea de crear una dependencia para el tema de Code COntracts y mas aun la palabra “Research” con la que es catalogado aun el proyecto. Todo cambio con la versión de VS2012 donde las clases de Code Contracts ya vienen incluidas en el NameSpace System.Diagnostic, pero las cosas se complicaron un poco mas, porque aquellos que leen la teoría de Code Contracts y tratan de llevarla a la practica se llevan una alegría inicial, porque podríamos ver que intellisense nos da algo así:

image

Parecería que todo anda normal que ya tengo todo integrado con VS pero al ejecutar el código anterior y pasarle a x un valor de 1, no ocurre nada.

Que tal si le cambiamos a esto:

image

Aquí suceden cosas mas “extrañas”, obtenemos una excepción o mensaje de error como este:

image

Ahhh pero claro tenemos que bajarnos el Rewriter de Code Contracts desde esta pagina:http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

Tambien existe un excelente documento guia en la misma pagina, lo pueden descargar desde aqui: http://download.microsoft.com/download/C/2/7/C2715F76-F56C-4D37-9231-EF8076B7EC13/userdoc.pdf

Mi principal observación es, porque aun no esta integrado el Rewriter dentro de VS2012? y/o del framework? Esto me obliga a colocar una dependencia adicional dentro de mi servidor de Build, entiendo que no es el gran problema pero, tampoco le veo problema a que todo este integrado.

Saludos

Una respuesta a “Code Contracts en VS2012 – Parte 1”

  1. Personalmente me parece bien que no esté integrado el rewriter dentro de VS.
    La razón es que el rewriter tendrá un ciclo de vida distinto al de VS (una versión cada dos años aprox), así que por fuerza debe venir separado. Esto no solo aplica al rewriter, las APIs que funcionan así (ASP.NET MVC, EF) lo hacen mucho mejor al estar desvinculadas del ciclo de vida de VS. De hecho creo que esta tendencia irá en aumento.

    Lo suyo sería que Code Contracts (no solo el rewriter, si no TODO Code Contracts, incluyendo el API) se pudiese descargar como un paquete de nuget.

    Saludos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *