我的解决方案/项目在此特定项目关闭代码合同的情况下构建良好。
当我在项目上打开执行运行时合同检查时,构建失败。 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应该能够处理任意顺序,特别是因为提供的'broken'排序是一个msbuild传递给Microsoft.CodeContracts.targets文件/ ccrewrite,但这对CC人来说是一个问题。我也在3台不同的机器上进行了测试,结果相同,所以它要么是ccrewrite问题,要么是ccrewrite不喜欢的特定csproj中的奇怪。
我想知道的是,我可以确保我的参考项目的特定顺序,它们会被链接传递到CC目标文件吗?我原以为构建引擎会在ItemGroup//ProjectReference
元素下使用它在项目csproj文件中读取的顺序,但事实并非如此。
有什么想法吗?