7

Actualmente estoy usando Microsoft Code Contracts en una aplicación ASP.NET MVC sin ningún problema, pero parece que no puedo ejecutarlo bastante en un sitio web básico de ASP.NET. No estoy del todo seguro de que se haya hecho para trabajar con este tipo de proyecto (aunque no debería importar), así que quería mostrarlo a todos.¿Se pueden usar los contratos de código de Microsoft con un sitio web ASP.NET?

Puedo compilar los contratos muy bien, pero el código se salta sobre ellos ya que supongo que no se ha habilitado a través de la página de propiedades como lo haría en otros tipos de proyectos (es decir, ASP.NET MVC). He ido a la página de propiedades del proyecto (que muestra un cuadro de diálogo en lugar de la página de propiedades típicas) en mi sitio web ASP.NET, pero no ofrece las mismas opciones de menú y, como tal, no tiene una sección dedicada para codificar los contratos.

Además, tengo Contratos de código de Microsoft debidamente habilitados dentro de un proyecto de biblioteca de clase que utilizo para separar mi lógica comercial del sitio web. Los contratos se compilan bien, pero cuando se infringe un contrato, arroja un error "Exception of type 'System.ExecutionEngineException' was thrown" poco informativo sin excepción interna. Mi contrato especifica un mensaje para mostrar al momento de la violación, pero no está dentro de la excepción. Simplemente detiene la ejecución del proceso (que creo que es la funcionalidad predeterminada para los Contratos de Código de Microsoft).

No puedo encontrar ningún lugar que indique explícitamente que un tipo de proyecto en particular puede o no (o no) ser utilizado con contratos, así que solo quería ver si alguien ha tenido este problema.

¡Gracias por cualquier ayuda!

+0

Teniendo el mismo problema, ¿alguna vez llegaste al fondo? – Kieron

Respuesta

0

Esto suena menos como un contrato y más como un problema de compilación/configuración. ¿Has intentado implementar un sitio web preconstruido? ¿Estás seguro de que el código de tu sitio web ve el código de los contratos? ¿Es el tiempo de ejecución de ASP.NET utilizando CLR 4.0, o ve el anterior Microsoft.Contracts.dll? Etc.

1

Yo tenía el mismo problema y es así como lo resolví:

en la clase de bibliotecas de referencia, haga clic derecho -> propiedades -> contratos de código. Asegúrese de que "verificar el contrato" esté marcado. Tengo el mío establecido en "Completo" Ensamblaje de referencia de contrato: asegúrese de que esté configurado en "Generar"

Guarde los cambios.

En las bibliotecas de clase referenciadas que no tienen contratos en su código, establezca el conjunto de referencia de contrato en "No compilar".

Luego, en el proyecto MVC, haga que los Contratos del Código "realicen la verificación del contrato" marcados. Tenía el mío establecido en "Completo".

Espero que ayude a alguien.

Cuestiones relacionadas