我已经从VisualStudio2010内部获得了运行良好的代码合同,但我无法获得
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肯定包含对Contract的引用-如果我在没有参数的情况下运行它,它会相应地失败(但是错误消息没有像我在重写它时预期的那样被填写)
-
我试着把警告和冗长的话调高,但那根本没有帮助
我做错了什么?
(也被作为一个
question in the Code Contracts forum
. 我将自己在这里添加任何相关的答案。)