Jon*_*eet 27 .net-4.0 code-contracts ccrewrite
我从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之后没有文件.
我已经尝试了很多选项,但没有任何区别.我注意到的一些事情:
我已经尝试过警告和冗长,这根本没有帮助我做错了什么?
Jon*_*eet 19
好的,这已在MSDN论坛中得到解答.这一次,我真的不是完全愚蠢 - 这是一个可以真正做到警告的事情.
阅读论坛帖子了解完整的详细信息,但基本问题是ccrewrite无法找到合同类:它正在查看.NET 3.5 CLR版本mscorlib而不是.NET 4.0版本.
这可以通过明确列出相关程序集的路径来修复:
> ccrewrite /o:rewrittendummy.exe dummy.exe
/libpaths:%SystemRoot%\Microsoft.Net\Framework\v4.0.20506
Run Code Online (Sandbox Code Playgroud)