代码之家  ›  专栏  ›  技术社区  ›  Jon Skeet

为什么ccrewrite.exe不从命令行执行任何操作?

  •  27
  • Jon Skeet  · 技术社区  · 16 年前

    我已经从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 . 我将自己在这里添加任何相关的答案。)

    1 回复  |  直到 16 年前
        1
  •  19
  •   Jon Skeet    16 年前

    好吧,这是一个 answered in the MSDN forum . 这一次,我并不是真的愚蠢透顶,而是一个警告。

    阅读论坛帖子了解全部细节,但基本问题是 ccrewrite mscorlib 而不是.NET4.0版本。

    > ccrewrite /o:rewrittendummy.exe dummy.exe 
      /libpaths:%SystemRoot%\Microsoft.Net\Framework\v4.0.20506