2010-02-14 22 views
6

tengo el siguiente código:Obtención de contratos código para trabajar en Visual Studio 2010

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine(SqrtRoot(0)); 
     Console.WriteLine(SqrtRoot(10)); 
     Console.WriteLine(SqrtRoot(-10)); 
     Console.ReadKey(); 
    } 

    public static int SqrtRoot(int i) 
    { 
     Contract.Requires(i >= 0); 
     return (int)Math.Sqrt(i); 
    } 
} 

Estoy funcionando en modo de depuración, y debería disparar algún tipo de error en la última línea

Console.WriteLine(SqrtRoot(-10)); 

aunque, por alguna razón, no es así. Parece ignorar la llamada Contract.Requires(). ¿Debo configurar algo cuando trato de usar Contratos de Código?

Estoy usando Visual Studio 2010 RC.

Gracias

Respuesta

2

que no tienen esa pestaña o bien, pero me pareció una solución:

Contract.Requires<ArgumentOutOfRangeException>(i >= 0); 

Probablemente el paquete de contratos de código debe ser instalado, pero el enlace de descarga no está funcionando. http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

+0

Eso disparará un error si para los valores de i = 0, i = 10 e i = -10. No lo entiendo –

+0

Lo he intentado con Contract.Requires (i> = 0); y ahora el directo no está en gris. Tal vez tengas que dar el tipo de excepción como sugiere Victor. –

+0

Hm ... Tienes razón. Algo no va bien allí ... Aunque el comportamiento predeterminado de los contratos es arrojar un error y mostrar una ventana. –

0

Yo creo que hay que permitir que el contrato de ejecución de comprobar en la configuración del proyecto (debe haber un panel de "contratos Código" ...)

Véase la (sección 6) user documentation para más información .

+2

Había pensado en eso, pero no puedo encontrarlo en ninguna parte de las opciones del proyecto. –

5

Necesita instalar la integración de Visual Studio. Si bien la biblioteca CodeContracts en sí forma parte de .NET 4, su código debe ser reescrito por el reescritor de Contratos de código (ccrewrite) para utilizar realmente la biblioteca correctamente.

Descargue el instalador desde el DevLabs site.