相关疑难解决方法(0)

为什么ccrewrite.exe没有从命令行做任何事情?

我从Visual Studio 2010中获得了Code Contracts,但我无法ccrewrite.exe从命令行做任何有用的事情.这是一个示例应用程序:

using System.Diagnostics.Contracts;

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

然后我编译代码并在其上运行ccrewrite.exe:

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

> ccrewrite /o:RewrittenDummy.exe Dummy.exe
elapsed time: 61ms
Run Code Online (Sandbox Code Playgroud)

RewrittenDummy.exe之后没有文件.

我已经尝试了很多选项,但没有任何区别.我注意到的一些事情:

  • 它肯定是加载Dummy.exe,因为如果我指定一个不存在的文件,它就会死掉
  • Dummy.exe肯定包含对Contract的引用 - 如果我在没有参数的情况下运行它,它会正确地失败(但是如果它已被重写,则错误消息没有被填写)
  • 使用后置条件和不变量没有区别

我已经尝试过警告和冗长,这根本没有帮助我做错了什么?

(也是代码合同论坛中的一个问题.我会在这里添加任何相关的答案.)

.net-4.0 code-contracts ccrewrite

27
推荐指数
1
解决办法
5585
查看次数

如何在.NET Core中正确使用代码约定

我想知道,如何在.NET Core中正确使用Code Contracts ,到目前为止我试图将CC添加到我的项目中,进行编译和调试.我对每个使用的呼叫中出现的消息Contract.Requires以及通过Google搜索找到的信息感到困惑.

消息说明:

必须使用代码契约二进制重写器(CCRewrite)重写程序集,因为它正在调用Contract.Requires<TException>并且CONTRACTS_FULL符号已定义.CONTRACTS_FULL从项目中删除符号的任何显式定义并重建.CCRewrite ....

正如我所看到的,项目属性中没有CC选项,因为我可以看到CC的Github存储库几乎已经死了.是如何在.NET Core中成功使用CC的?

如果没有,是否有任何简单的方法来替换它们?我用Contract.RequiresContractClassAttribute.更换Contract.Requires是显而易见的,但ContractClassAttribute让我大吃一惊:-)

c# code-contracts .net-core

26
推荐指数
2
解决办法
6142
查看次数

Visual Studio Express 2013中的代码约定支持

我一直在Visual Studio Express 2013中开发一个C#项目,并且遇到了.NET语言的代码契约.他们的简洁性和随附的静态分析工具给我留下了深刻的印象,我开始在我的代码库中使用它们.但是,当我试图运行我的程序时,我遇到了类似于在这个SO线程中发现的错误消息,即

...必须使用代码契约二进制重写器(CCRewrite)重写程序集(可能是"<my project>"),因为它正在调用Contract.Requires并且定义了CONTRACTS_FULL符号.从项目中删除CONTRACTS_FULL符号的任何显式定义并重建...

指南建议要解决此问题,我必须从项目的"属性"页面启用代码约定,但在Express中无法找到代码约定属性条目.

一些MSDN论坛主题似乎表明代码合同的所有工具都包含在Express版本中,但Code Contracts Properties页面却没有.这似乎是这种情况,因为我能够在VSE 2013中运行我的项目,只有在我的大学毕业之前从我的大学获得的Visual Studio 2012 Ultimate的副本启用代码合同之后.

除了通过手动修改项目文件或使用付费版本的Visual Studio修改项目文件外,是否真的无法在Visual Studio Express中使用代码约定?如果是这种情况,我对使用它们非常犹豫,因为我的公司不太可能购买VS许可证.此外,微软试图扩展这种新的优越的验证范例,然后将其仅限于付费用户,这似乎是非常奇怪的.

.net c# code-contracts visual-studio-express visual-studio-2013

11
推荐指数
2
解决办法
5040
查看次数