微软代码合同:错误“CodeContracts: Diagnostic: Failed to connect to any cache.”

8
当运行Microsoft Code Contracts时,我遇到了以下错误:
CodeContracts: Diagnostic: 连接到任何缓存失败。
2个回答

10

Code Contracts用户手册中指出:

缓存结果:控制是否缓存分析结果。如果选中,则分析会尝试避免分析方法的结果,这些结果不可能改变(因为没有契约、代码和相关元数据已经修改)。启用此选项可以加快使用静态检查器反复检查的速度。要在多个开发人员之间共享缓存,请使用SQL服务器并将服务器名称放入UI中的SQL Server配置框中。注意:SQL服务器连接使用Windows身份验证登录服务器。您的开发人员需要有创建和修改数据库的权限。

找出在您的计算机上安装的SQL服务器的正确名称(请注意,“localhost”无法使用;必须是实际的计算机名称):

输入图像说明

右键单击项目,选择“属性”,转到“Code Contracts”选项卡(在列表底部),然后添加您的计算机名称:

输入图像说明

这适用于发布版本1.5.60911.10(2013年9月11日)。也许未来版本的Code Contracts将尝试连接到“localhost”和/或接受“localhost”在此框中,和/或自动检测SQL Server 2012。

在我的特定情况下,我没有安装“(localdb)\V11.0”;如果我安装了它,那么它将可以直接使用(它必须在内部默认)。


你是否知道当“缓存结果”选项被设置但没有指定服务器时,CC引擎会执行什么操作? - Crono
据我所知,没有任何东西。如果没有数据库连接,它就无法缓存结果,因此每次运行都必须从头开始重新生成。这就像省略应用程序的SQL连接字符串一样-它不会工作得很好。 - Contango
2
实际上,昨天我后来发现它确实会自己创建一个数据库并将其存储在User/AppData/Local/CodeContracts中。 :) - Crono
啊,太棒了!据我所知,中央数据库的优点在于多个开发人员可以共享同一个中央数据库以提高速度。 - Contango
本地主机在代码合同 v1.9.10714.2 中适用于我。不确定支持开始的时间。 - Keith

3
只需在“Code Contracts”属性页的“静态分析”部分取消选中“缓存结果”选项即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接