2010-02-14 10 views
6

Ich habe den folgenden Code:Erste-Code Verträge in Visual Studio 2010 arbeiten

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); 
    } 
} 

ich es im Debug-Modus laufen lasse, und es soll eine Art von Fehlern in der letzten Zeile

Console.WriteLine(SqrtRoot(-10)); 
Feuer

obwohl aus irgendeinem Grund nicht. Es scheint den Contract.Requires() -Aufruf zu ignorieren. Sollte ich etwas einrichten, wenn ich Code Contracts verwenden möchte?

Ich verwende Visual Studio 2010 RC.

Dank

Antwort

2

Ich habe nicht, dass die Registerkarte entweder, aber ich fand eine Abhilfe:

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

Wahrscheinlich muss der Code Verträge Paket installiert werden, aber der Download-Link nicht funktioniert. http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

+0

Das wird einen Fehler auslösen, wenn für Werte von i = 0, i = 10 und i = -10. Ich verstehe es nicht. –

+0

Ich habe gerade versucht, dass mit Contract.Requires (i> = 0); und jetzt ist das Leben nicht ausgegraut. Vielleicht müssen Sie den Ausnahmetyp angeben, wie Victor es vorschlägt. –

+0

Hm ... Du hast Recht. Etwas läuft dort nicht gut ... Auch wenn das Standardverhalten von Verträgen darin besteht, einen Fehler zu verursachen und ein Fenster anzuzeigen. –

0

Ich glaube, Sie haben Runtime-Vertrag zu ermöglichen, in den Projekteinstellungen Überprüfung für weitere Informationen

Siehe user documentation (Abschnitt 6) (es soll ein "Code Contracts" pane ... sein) .

+2

Ich hatte darüber nachgedacht, aber ich kann es nirgendwo auf den Projektoptionen finden. –

5

Sie müssen die Visual Studio-Integration installieren. Während die CodeContracts-Bibliothek selbst Teil von .NET 4 ist, muss Ihr Code vom Code Contracts rewriter (ccrewrite) neu geschrieben werden, um die Bibliothek ordnungsgemäß zu verwenden.

Laden Sie das Installationsprogramm von der DevLabs site herunter.