代码合同:ccrewrite以代码-1退出?

我是代码合同的新手。 我下载了最新版本的代码合同项目(1.4.40314.1)并开始在我的项目中实现它。 当我通过VS2010中的代码合同选项卡启用“Runtume Checking”时,出现此错误

Error 1 The command ""C:\Program Files (x86)\Microsoft\Contracts\Bin\ccrewrite" "@Application1ccrewrite.rsp"" exited with code -1.

每次我建立项目。 Plz的帮助。


现在这对我来说是个主要问题。 使用代码契约的每个项目在VS2010错误窗口中显示相同的错误,在输出窗口中找不到’Application1ccrewrite.rsp’,但它就在那里。


我尝试了一切。 我安装了两个版本(Pro,Std),但问题仍然存在。 Plz帮忙!


截图

我也有这个问题。 在我的情况下,问题是ccrewrite不能与网络文件夹中的文件一起使用,但要求项目在本地硬盘上。

我有这个问题。 导致该问题的类库的程序集名称和默认名称空间与目标文件夹中的现有DLL具有相同的名称。 我一直在重构我的代码,虽然CS文件中的命名空间都已更改为namespace2,但属性文件中的默认命名空间仍然是namespace1当我更正此文件时,所有文件都已成功构建…

有时,当解决方案路径太长时,您可以获得此信息,特别是对于许多项目。

尝试移动到c:\ temp并构建它,它可能会修复它(当然,如果你需要它在当前的文件夹中,这可能不是一个解决方案)。

我在之前的CC版本中注意到这个错误,现在可以修复。

我不知道你是否和我有同样的问题,但我也看到了这个错误。 在我的例子中,我有一个带有switch语句的方法,并且根据所采用的分支,应用了不同的要求:

 static ITransaction CreateTransaction( String transType, MyType1 parm1, /* Other params unimportant to this example */ String parm5) { switch (transType) { case Transaction.Type.SOME_TRANSFER: Contract.Requires(parm1.Account != null, "Account cannot be null."); Contract.Requires(!String.IsNullOrWhiteSpace(parm5), "parm5 cannot be null or empty."); // Create instance return someInst; case Transaction.Type.SOME_OTHER_TRANSFER: Contract.Requires(!String.IsNullOrWhiteSpace(parm1.Type), "Type cannot be null or empty."); Contract.Requires(!String.IsNullOrWhiteSpace(parm1.Number), "Number cannot be null or empty."); // Create instance return someInst; /* Other cases */ default: throw new ApplicationException("Invalid or unknown transaction type provided."); } } 

当我尝试构建时,这给了我在错误列表中记下的错误。 在输出窗口中,我得到了这个:

EXEC:参考汇编生成器警告:方法’TerraCognita.LoanExpress.Domain.Loan.CreateLoanTransaction’中的合同号1出现问题AsmMeta因未捕获exception而失败:由于对象的当前状态,操作无效。

我将每个分支推入自己的方法,使Contract.Requires在每个方法中的第一行代码,我不再有编译问题。 似乎Contract.Requires必须是方法中的第一行代码 – 这是有道理的,因为它们旨在用于定义前置条件。

希望这可以帮助。

解决方案是将pre和pos条件放在第一行。 ccrewrite不接受pre和post条件低于命令行。