Frage

Ich habe-Code Verträge arbeiten gut in Visual Studio 2010, aber ich kann nicht ccrewrite.exe bekommen, etwas Sinnvolles über die Befehlszeile zu tun. Hier ist eine Beispielanwendung:

using System.Diagnostics.Contracts;

public class Dummy
{
    public static void Main(string[] args)
    {
        Contract.Requires(args.Length > 0);
    }
}

ich kompilieren Sie dann den Code, und führen Sie ccrewrite.exe darauf:

> csc /debug+ /D:CONTRACTS_FULL Dummy.cs

> ccrewrite /o:RewrittenDummy.exe Dummy.exe
elapsed time: 61ms

Es gibt keine RewrittenDummy.exe Datei danach.

Ich habe jede Menge Optionen ausprobiert, aber nichts hat sich macht keinen Unterschied. Ein paar Dinge, die ich habe bemerkt:

  • Es ist definitiv Dummy.exe Laden, denn wenn ich eine nicht vorhandene Datei angeben, es stirbt
  • Dummy.exe enthält definitiv Verweise auf Vertrag - wenn ich es ohne Argumente laufen, ist es nicht angemessen (aber die Fehlermeldung, wie ich wurde nicht ausgefüllt erwarten würde, wenn es neu geschrieben worden war)
  • Verwenden von Nachbedingungen und Invarianten macht keinen Unterschied

Ich habe versucht, Warnungen und Ausführlichkeit Aufdrehen, und das hilft nicht bei allen Was mache ich falsch?

(auch als Frage im Code-Verträge Forum . ich alle relevanten Antworten uns hier hinzugefügt werden.)

War es hilfreich?

Lösung

Okay, das war in dem MSDN-Forum beantwortet. Für einmal ist es nicht wirklich war ganz dumm ich -. Es ist etwas, das wirklich mit einer Warnung tun könnte

Lesen Sie das Forum Post für weitere Informationen, aber das grundlegende Problem ist, dass ccrewrite nicht die Vertragsklassen finden kann. Es wurde in der .NET 3.5 CLR-Version von mscorlib anstelle von .NET 4.0 einem Blick

Dies kann durch die explizite Auflistung des Pfades zu den betreffenden Baugruppe befestigt werden:

> ccrewrite /o:rewrittendummy.exe dummy.exe 
  /libpaths:%SystemRoot%\Microsoft.Net\Framework\v4.0.20506
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top