我已经得到了代码合同工作的现从内部Visual Studio2010年,但我不能 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 肯定包含对合同如果我运行它没有参数,它无法适当地(但错误消息还没有填写,因为我想如果它已被改写)
  • 使用后置条件和不变是没有区别

我已经试过把警告和详细程度,并没有帮助在所有 我做错了什么?

(还询问,作为一个 问题在代码合同的论坛.我会加入任何相关答案在这里我自己。)

有帮助吗?

解决方案

好吧,这已经 回答MSDN论坛.这一次,这不是真的我完全愚蠢的-这些东西真的可以做一个警告。

阅读的论坛员额的全部细节,但是基本问题是 ccrewrite 找不到合同类:这是在寻找的。净3.5CLR的版本 mscorlib 而不是的.净4.0个。

这可以通过固定明确的路径有关的组件:

> ccrewrite /o:rewrittendummy.exe dummy.exe 
  /libpaths:%SystemRoot%\Microsoft.Net\Framework\v4.0.20506
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top