gpt4 book ai didi

c# - 重写期间的 CodeContracts 元数据错误

转载 作者:行者123 更新时间:2023-11-30 16:35:15 26 4
gpt4 key购买 nike

我正在尝试在大型桌面应用程序项目中使用 .NET 3.5 的代码契约(Contract),该项目也具有混合模式 C++ DLL 依赖项,用旧的托管 C++ 语法编写。

真正的解决方案至少包含 20 个项目,但假设只有 A、B、C 和 D 项目,以及混合模式 M 项目。 C依赖于A、B、M。A、B、C都配置了执行运行时检查,代码重写效果很好。现在我想将一些契约(Contract)添加到一个更高级别的组件中,称为 D。D 也依赖于所有其他组件,A、B、C 和 M。现在 D 的代码重写失败并显示以下消息(我已经更改了名称):

15>    Reading assembly 'C' from 'build\debug\C.dll' resulted in errors.
15> ccrewrite : error : Rewrite aborted due to metadata errors. Check output window
15> Input string was not in a correct format.
15> Malformed signature.
15> Index was outside the bounds of the array.
15> Malformed signature.
15> Could not resolve type reference: [M]Name.Space.Class1.
15> Could not resolve type reference: [M].EnumType.
15> Malformed signature.
15> Malformed signature.
15> Could not resolve type reference: [M]Name.Space.Class1.
15> Could not resolve type reference: [M].EnumType.
15> Malformed signature.
15> Malformed signature.
15> Input string was not in a correct format.
15> Malformed signature.
15> Could not resolve type reference: [M]Name.Space.Class1.
15> Could not resolve type reference: [M].EnumType.
15> Malformed signature.
15> Malformed signature.
15> Index was outside the bounds of the array.
15> Malformed signature.

因为关于 M 的消息,我认为问题出在混合模式 C++ DLL 上。但是C程序集本身可以改写成功,同时它也引用了M。

我还认为问题不直接出在 D 程序集上,因为我已经在同一解决方案中尝试过使用其他更高级别的程序集,如果它们引用 C,则无法通过代码契约工具重写.

我使用的版本是1.2.21023.14

我也在 CodeContracts MSDN 论坛上问过这个问题,但还没有收到任何答案,所以我想我会在这里试试。我对与此相关的任何解决方法或想法感兴趣。

最佳答案

要清除元数据错误,清理您的解决方案然后重建它通常就足够了。

关于c# - 重写期间的 CodeContracts 元数据错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1998140/

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