2009-07-30 14 views
27

Mam umowy kodu działa poprawnie od wewnątrz programu Visual Studio 2010, ale nie mogę uzyskać ccrewrite.exe zrobić nic użytecznego z linii poleceń. Oto app próbki:Dlaczego ccrewrite.exe nie robi nic z wiersza poleceń?

using System.Diagnostics.Contracts; 

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

Następnie skompilować kod i uruchomić ccrewrite.exe na nim:

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

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

Nie ma plik RewrittenDummy.exe później.

Próbowałem wielu opcji, ale nic nie robi żadnej różnicy. Kilka rzeczy zauważyłem:

  • To zdecydowanie ładuje Dummy.exe, bo gdybym określić nieistniejącego pliku, umiera
  • Dummy.exe zdecydowanie zawiera odniesienia do umowy - jeśli uruchomię go z żadne argumenty, to nie odpowiednio (ale komunikat o błędzie nie został wypełniony w jak będę oczekiwać, gdyby została przepisana)
  • Korzystanie postconditions i niezmienników nie robi różnicy

próbowałem obracając ostrzeżenia i gadatliwość w górę, a to wcale nie pomaga Wh co robię źle?

(poprosił także jako question in the Code Contracts forum. Dodam tutaj żadnych stosownych odpowiedzi sam.)

Odpowiedz

19

Ok, to było answered in the MSDN forum. Po pierwsze, to nie było tak naprawdę bycie całkowicie głupim - to coś, co może naprawdę zrobić z ostrzeżeniem.

Przeczytaj wpis na forum, aby uzyskać szczegółowe informacje, ale podstawowym problemem jest to, że ccrewrite nie mógł znaleźć klas kontraktowych: szukał w wersji .NET 3.5 CLR mscorlib zamiast .NET 4.0.

ta może być ustalona przez wyraźnie wymieniając ścieżkę do właściwego montażu:

> ccrewrite /o:rewrittendummy.exe dummy.exe 
    /libpaths:%SystemRoot%\Microsoft.Net\Framework\v4.0.20506 
+1

Gdzie mogę dodać ten wiersz? – Pedro77

+0

Ive skomentował wszystkie moje połączenia z Contracts i wrócił do starego i dobrego! = Null ... ccrewrite jest zbyt błędny. – Pedro77

+0

@ Pedro77: Trudno powiedzieć dokładnie, jaki masz problem z tych komentarzy. Być może otworzyć nowe pytanie? –

Powiązane problemy