代码之家  ›  专栏  ›  技术社区  ›  Wim Coenen

Visual Studio 2010 Premium是否包括合同工具?

  •  7
  • Wim Coenen  · 技术社区  · 15 年前

    根据 this feature matrix ,Visual Studio 2010高级版(RC)包括“静态代码分析”。

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

    我是否遗漏了一些明显的东西,或者此功能仅在最终版本中可用?

    3 回复  |  直到 15 年前
        1
  •  3
  •   adrianbanks    15 年前

    对于代码契约是否包含在VS2010的beta 2附带的框架中,或者甚至在VS2010本身中,似乎确实存在一些混淆。这个 Code Contracts forum (尤其是 this post)已经多次提到这一点,到目前为止还没有答案。


    我认为代码契约不属于静态代码分析的范畴。我认为静态代码分析指的是其他代码分析工具,比如fxcop。

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

    根据Melitta(来自基类库团队)对Connect文章的评论 Make data contract static checking available in Professional Edition :

    …但是对静态分析工具的限制代表了即将发布的版本。它保持代码分析故事的一致性,因为静态分析工具需要VST。

    这意味着您(将)必须拥有团队系统版本才能获得代码契约的编译时版本。

        2
  •  3
  •   Paul Killick    15 年前

    要在beta 2中获得静态分析,您必须从下载并安装代码契约位(1.2.21023.14或更高版本) MSDN DevLabs . 然后在项目属性下,将出现一个代码合同选项卡…从这里您可以打开静态分析…

    您看到的行为是因为代码契约API位于mscorlib程序集中,它允许断言工作,但不允许其他任何操作。

    我假设RTM不需要这样做。

        3
  •  1
  •   Matt Breckon    15 年前

    您需要在项目属性中打开代码契约运行时检查。如果该设置窗格不存在,则需要安装从Microsoft下载的代码协定(尽管框架中存在协定.requires)。

    只有运行时检查在专业版中可用。