我的解决方案/项目构建良好,并且为此特定项目关闭了代码契约(Contract)。

当我在项目上打开“执行运行时契约(Contract)检查”时,构建将失败。 CC重写器开始按照以下方式发出数百条消息:
Could not resolve member reference: ....
看来此问题是由通过libpaths参数传递给ccrewrite的项目引用的顺序引起的。当我拆开构建,并在命令行上运行它时,我以特定的顺序手动指定了对libpaths的引用,ccrewrite可以正常工作,并且构建完成。

例如
ccrewrite /level:4 /rewrite "/assemblyMode=standard" /throwonfailure /libpaths:"X Y Z" "target.dll" -- fails :(ccrewrite /level:4 /rewrite "/assemblyMode=standard" /throwonfailure /libpaths:"Z Y X" "target.dll" -- compiles/rewrites :)
这对我来说似乎有些奇怪,我以为ccrewrite应该能够处理任意顺序,尤其是由于提供的“中断”顺序是msbuild传递给Microsoft.CodeContracts.targets文件/ccrewrite的顺序,但是多数民众赞成在CC家伙的问题。我也在3台不同的机器上进行了测试,结果相同,因此它可能是ccrewrite问题,或者是ccrewrite不喜欢的特定csproj有点奇怪。

我想知道的是,我可以确保引用项目的特定顺序沿着链传递到CC目标文件吗?我本来以为构建引擎将使用它在ItemGroup//ProjectReference元素下的项目csproj文件中读取的顺序,但事实并非如此。

有任何想法吗?

最佳答案

这是该工具中的identified error,并且已在最新版本v1.4.31130.0 2010-11-30中解决。

关于.net - 代码契约(Contract)重写失败-libpaths顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4158329/

10-14 16:46
查看更多