visual studio 2010 Premium是否包含合同工具?

时间:2009-10-22 16:25:41

标签: visual-studio visual-studio-2010 visual-studio-2010-rc

根据this feature matrix,Visual Studio 2010 Premium(RC)包含“静态代码分析”。

但是,在我的方法开头添加对Contract.Requires的调用似乎没有任何效果。如果合同被违反,我不会得到运行时异常。如果无法证明合同,我不会收到编译器警告。我也找不到项目设置中的“代码合同”选项卡。

我是否遗漏了一些显而易见的内容,或者此功能仅在Ultimate版本中提供?

3 个答案:

答案 0 :(得分:3)

对于VS2010的beta 2,甚至VS2010本身的框架中是否包含Code Contracts,似乎确实存在一些混淆。 Code Contracts forum(以及特别是this帖子)有几个提及,目前还没有答案。


我不认为Code Contracts属于静态代码分析的标题。我认为静态代码分析涉及其他代码分析工具,如FxCop。

我尝试在VS2010 beta 2终极版中使用Contract.Requires,但我得到了与你相同的行为。如果查看“代码分析”选项卡下的项目属性,则可以启用代码分析,但这与代码约定无关。

根据连接文章Make data contract static checking available in Professional Edition上Melitta(来自基类图书馆小组)的评论:

  

...但静态分析工具的限制代表即将发布的版本。它使代码分析故事保持一致,因为静态分析工具需要VSTS。

这表明您(将)必须拥有团队系统版本才能获得代码合同的编译时版本。

答案 1 :(得分:3)

要在Beta 2中进行静态分析,您必须从MSDN DevLabs下载并安装代码合同位(1.2.21023.14或更高版本)。然后在项目属性下,现在会有一个Code Contracts选项卡......从这里你可以打开静态分析......

您所看到的行为是因为Code Contracts API位于mscorlib程序集中,它允许断言起作用,但没有别的。

我认为RTM不需要这样做。

答案 2 :(得分:1)

您需要在项目属性中打开代码合同运行时检查。如果该设置窗格不存在,则需要安装Microsoft的Code Contracts下载(尽管框架中存在Contract.Requires)。

专业版仅提供运行时检查。