Msbuild 如果代码契约重写器未运行,为什么TFS2012报告生成成功?
我构建解决方案,但构建服务器上未安装CC工具。Msbuild 如果代码契约重写器未运行,为什么TFS2012报告生成成功?,msbuild,code-contracts,Msbuild,Code Contracts,我构建解决方案,但构建服务器上未安装CC工具。 所以没有重写 现在我很好奇,如果不是所有任务都完成了,为什么msbuild报告生成成功? 另外,我在msbuild方面完全没有经验,所以如果我的问题听起来很愚蠢,请原谅,伙计们 更新 我安装了本地代码契约扩展,它为项目选项创建了额外的选项卡。然后我在运行时启用了代码契约检查,并在Main方法的最开始添加了以下行: // test for Code Contracts rewrite // exception is thrown if no rewr
所以没有重写 现在我很好奇,如果不是所有任务都完成了,为什么msbuild报告生成成功?
另外,我在msbuild方面完全没有经验,所以如果我的问题听起来很愚蠢,请原谅,伙计们 更新
我安装了本地代码契约扩展,它为项目选项创建了额外的选项卡。然后我在运行时启用了代码契约检查,并在Main方法的最开始添加了以下行:
// test for Code Contracts rewrite
// exception is thrown if no rewrite
Contract.Requires<Exception>(true);
//代码契约重写测试
//如果没有重写,将引发异常
合同要求(真实);
我提交了对TFS的更改并启动了构建,它成功地完成了,没有任何警告。未进行重写,我的应用程序引发异常。我读过有关Microsoft.CodeContracts.targets文件的文章,在CC installation dir中找到了它,但在项目文件中没有看到对它的引用。只有像
1
这样的元素
我不明白msbuild从哪里获得有关CC的知识以及如何应用它们
更新2最终,我们在构建服务器上安装了代码契约,并执行了汇编指令插入。
但是还不清楚CC安装过程中更改了哪些设置。您还需要在构建服务器上安装这些工具。契约工具的设计是这样的,除非您使用
contract.Requires(…)
,否则您可以在不使用我们的工具的情况下构建和发布BIT。但是,如果使用的是Contract.Requires(…)
,则必须按照文档说明使用重写器。因此,为了成功构建项目,您需要安装这些工具。
MsBuild、VS和C对契约工具一无所知,因此无法警告您缺少工具安装
希望这能有所帮助。我很难理解你的问题和你的问题。你能试着重写一下吗?这样我就能帮你了。我更新了我的问题。希望,它变得更清晰了…谢谢,这更清晰了。很清楚,虽然我没有使用过代码契约,但我认为现在有人可以回答这个问题了。是的,我们在构建服务器上安装了它。但有趣的是,MS Build如何了解已安装的coed contracts工具。安装程序是否在注册表中创建了一些记录?@voroninp,CodeContract安装程序在标准msbuild目录中添加了一个msbuild目标文件,该文件包含在公共生成文件之后。这就是我们控制构建并在必要时调用工具的方式。