2009-07-30 4 views
27

私は、Visual Studio 2010内から細かい作業コードの契約を持っているが、私はccrewrite.exeは、コマンドラインから有用な何かをすることができません。ここではサンプルアプリケーションです:ccrewrite.exeがコマンドラインから何もしないのはなぜですか?

using System.Diagnostics.Contracts; 

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

私は、コードをコンパイルして、その上にccrewrite.exeを実行します。

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

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

RewrittenDummy.exeファイルはその後ありません。

私はオプションの負荷を試してみたが、何も任意の違いを作るんです。私が気づいたいくつかのこと:

  • 私は存在しないファイルを指定した場合、それは死ぬので、それは間違いなく、Dummy.exeをロードしていますDummy.exeは間違いなく契約の参照が含まれてい
  • - 私はそれを実行した場合引数、それが適切に失敗した(ただし、エラーメッセージは、それが書き直されていた場合、私は期待通りに記入されていない)
  • なし事後条件と不変条件を使用すると私は警告を回してみたに違い

を行うものではありません冗長性が上がって、それはまったく助けにならない Wh私は間違っていますか?

は(またquestion in the Code Contracts forumとして尋ねた。私はここで自分自身を任意の関連する答えを追加します。)

答えて

19

さて、これはanswered in the MSDN forumてきました。一度、それは本当に私が完全に愚かではありませんでした - それは本当に警告で行うことができるものです。

詳細についてはフォーラムのポストを読んでください。基本的な問題は、ccrewriteが契約クラスを見つけられなかったことです。.NET 3.5 CLRバージョンの.NET 4.0ではなくmscorlibです。

これは、明示的に、関連するアセンブリへのパスをリストすることによって固定することができます。

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

私はこの行を追加します。どこに? – Pedro77

+0

Iveはすべての私の契約書にコメントして、古くて良いものに戻った!= null ... ccrewriteはバグが多い。 – Pedro77

+0

@ Pedro77:これらのコメントからあなたの問題が何であるかを正確に伝えるのは難しいです。おそらく新しい質問を開きますか? –

関連する問題