gpt4 book ai didi

.net-4.0 - 为什么 ccrewrite.exe 没有从命令行执行任何操作?

转载 作者:行者123 更新时间:2023-12-03 10:16:37 24 4
gpt4 key购买 nike

我的代码契约(Contract)在 Visual Studio 2010 中运行良好,但我无法获得 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 。我会自己在这里添加任何相关的答案。)

    最佳答案

    好的,这是answered in the MSDN forum .这一次,并不是我真的完全愚蠢 - 这是真的可以通过警告来做的事情。

    阅读论坛帖子以获取完整详细信息,但基本问题是 ccrewrite找不到契约(Contract)类:它正在查找 mscorlib 的 .NET 3.5 CLR 版本而不是 .NET 4.0 一个。

    这可以通过明确列出相关程序集的路径来解决:

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

    关于.net-4.0 - 为什么 ccrewrite.exe 没有从命令行执行任何操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1209166/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com