Visual Studio Express 2013中的代码约定支持

本文关键字:代码 约定 支持 Studio Express 2013 Visual | 更新日期: 2023-09-27 18:12:39

我一直在Visual Studio Express 2013中开发一个C#项目,并遇到了.NET语言的代码契约。它们的简洁和附带的静态分析工具给我留下了深刻的印象,我开始在代码库中使用它们。然而,当我试图运行我的程序时,我遇到了一条类似于这个SO线程中发现的错误消息,即

程序集(可能为"我的项目"(必须使用代码契约二进制重写器(CCRewrite(重写,因为它正在调用Contract.Requals,而CONTRACTS_FULL符号为定义删除CONTRACTS_FULL符号的任何显式定义从您的项目和重建。。。

指南建议,要解决此问题,我必须从项目的"属性"页面启用"代码约定",但在Express中找不到"代码约定属性"条目。

一些MSDN论坛线程似乎表明,代码契约的所有工具都包含在Express版本中,但代码契约属性页面却没有。事实似乎就是这样,因为我只有在使用毕业前从大学获得的Visual Studio 2012 Ultimate副本启用代码合同后,才能在VSE 2013中运行我的项目。

除了手动或使用付费版本的Visual Studio修改项目文件之外,是否真的没有办法在Visual Studio Express中使用代码约定?如果是这种情况,我非常犹豫是否使用它们,因为我的公司不太可能购买VS许可证。此外,微软试图推广这种新的高级验证模式,但却将其仅限于付费客户,这似乎极为奇怪。

Visual Studio Express 2013中的代码约定支持

您可能会使用新的VS Community 2013,只要您满足许可要求:http://www.visualstudio.com/en-us/visual-studio-community-vs

以下是如何在组织中使用Visual Studio社区:

一个组织中可以使用Visual Studio的用户数量不受限制以下场景的社区:在课堂上学习环境,用于学术研究或为开源做出贡献项目。

适用于所有其他使用场景:在非企业中组织,最多5个用户可以使用Visual Studio社区。在里面企业组织(指拥有250台以上电脑或100万美元以上电脑的组织年收入为美元(,不允许在开放之外使用来源、学术研究与课堂学习环境上述场景。

它基本上是免费的VS2013Professional,所以你可以安装代码合约扩展。

问题出在您的Visual Studio版本上。正如您所说,您正在运行Visual Studio 2013学习版。为了在VisualStudio中使用二进制重写器,您需要安装代码约定扩展。这些可以从微软的软件工程研究(RiSE(网站下载,该网站打包为Windows安装程序。

安装程序安装所需的二进制重写器,以及一组Visual Studio扩展。不幸的是,代码合约在第40页的手册中指出,它们不支持各种VisualStudioExpress版本。您至少需要拥有Visual Studio 2013 Professional版本,才能在Visual Studio中使用代码约定二进制重写器扩展,并在项目属性窗口中查看"代码约定"选项卡。

代码契约执行程序集重写,这是构建后步骤。也就是说,VisualStudio首先像往常一样编译.NET代码。但是,当使用代码约定并在项目中启用正确的选项时(假设安装了VS扩展,而在Express版本中无法做到这一点(,Visual Studio会在正常编译过程后为您调用二进制重写器。

相反,在编译程序后,您需要手动运行代码约定在编译的程序集(以及所有依赖程序集(上安装的ccrewrite程序,以"重写"程序集,这将添加所有代码约定检查信息。有关如何做到这一点的信息,请参阅代码合同文档(也可在RiSE网站上获得(。

Contract对于Visual Studio Express 2013来说应该是无用的(至少代码Contract为所有非Express版本提供了一个插件(。

因此,必须在项目属性->构建->通用->条件编译符号中定义符号CONTRACTS_FULL

然后将对ccrewrite.exe的正确调用添加到项目属性->生成事件下的生成后事件命令行中。命令应该设置为类似的内容

"C:'Program Files (x86)'Microsoft'Contracts'Bin'ccrewrite.exe" -throwOnFailure "$(TargetPath)"

我今晚和NUnit成功地使用了这个。使用契约,我的单元测试不需要明确地检查发布条件。