Microsoft代码合同和CI构建服务器

Microsoft代码合同和CI构建服务器

我们正在迁移到.NET 4,非常有兴趣实施新的“按合同设计”功能。

我们知道代码合约引擎需要安装代码合同插件 替代文字
和VS Ultimate或Premium(静态检查)。

这是我的问题:

  1. 可以使用代码合同重写而不在CI构建服务器(TeamCity)上安装VS吗?
  2. 是否有任何msbuild任务执行合同检查?
  3. 您是否使用代码合同的CI构建验证?
采纳答案:

可以使用代码合同重写而不在CI构建服务器(TeamCity)上安装VS吗?

是。 在构建服务器上安装CodeContracts。 (如果它拒绝在没有Visual Studio的机器上安装,只需将下面列出的文件及其依赖项复制到构建服务器上。)安装完成后,您会发现CodeContract工具安装在%programfiles%\ Microsoft \ Contracts \宾。 在该目录中,有4个可执行文件可用于:

  1. ccrewrite.exe - 二进制重写器。 这应该在编译后执行。 它将您的合同变成运行时检查或您希望他们转换的任何内容。

  2. ccrefgen.exe - 这可以在程序集旁边生成合同参考程序集。 如果您运送dll以供其他方使用,这将非常有用。

  3. cccheck.exe - 静态检查器。 在构建服务器上,您可以在包含合同的程序集上运行此工具,并且会在遇到潜在问题时发出警告和消息。

  4. ccdocgen.exe - 这将从代码中的合同生成XML文档。 如果您正在运送dll与其他方消费的合同,或者您只需要在代码上使用内部文档,则可能需要使用此选项。

是否有任何msbuild任务执行合同检查?

是。 有两个MSBuild任务与CodeContracts一起运送:在同一个CodeContracts安装目录中,查看MSBuild \ [framework version]文件夹。 在该目录中,有2个文件可以帮助您:Microsoft.CodeContracts.targets和Microsoft.CodeContractAnalysis.targets。

根据CodeContracts文档,

msbuild脚本扩展Microsoft .Contract。 目标包含运行时契约仪器和静态验证步骤的额外构建操作。 作为这种方法的结果,当使用msbuild命令从命令行构建时,可以使用相同的功能。 在使用通过VS用户界面启用合同的项目或解决方案上使用msbuild将执行与VS下的相应构建相同的操作。

如您所见,可以通过MSBuild目标将工具集成到CI构建中。

您是否使用代码合同的CI构建验证?

假设你的意思是用警告/消息进行静态检查,我已经亲自做了,但是没有在一个大项目上做到这一点。

我希望这有帮助!

帽子提示给Jon Skeet的C#深度书籍,解释命令行工具。

参考更多解答:Microsoft代码合同和CI构建服务器,转载请保留Microsoft代码合同和CI构建服务器

更多:code-contracts