Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Msbuild 如果代码契约重写器未运行,为什么TFS2012报告生成成功?_Msbuild_Code Contracts - Fatal编程技术网

Msbuild 如果代码契约重写器未运行,为什么TFS2012报告生成成功?

Msbuild 如果代码契约重写器未运行,为什么TFS2012报告生成成功?,msbuild,code-contracts,Msbuild,Code Contracts,我构建解决方案,但构建服务器上未安装CC工具。 所以没有重写 现在我很好奇,如果不是所有任务都完成了,为什么msbuild报告生成成功? 另外,我在msbuild方面完全没有经验,所以如果我的问题听起来很愚蠢,请原谅,伙计们 更新 我安装了本地代码契约扩展,它为项目选项创建了额外的选项卡。然后我在运行时启用了代码契约检查,并在Main方法的最开始添加了以下行: // test for Code Contracts rewrite // exception is thrown if no rewr

我构建解决方案,但构建服务器上未安装CC工具。
所以没有重写

现在我很好奇,如果不是所有任务都完成了,为什么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目标文件,该文件包含在公共生成文件之后。这就是我们控制构建并在必要时调用工具的方式。