2

我们有一个包含 60 个项目的中型 VisualStudio 解决方案。每个项目都包含代码合约。由于我们使用Contract.Requires<T>我们的前置条件,我们需要在编译后重写我们的程序集。

组装模式是“标准合同要求”,运行时检查设置为“完整”,我们设置了“合同失败时断言”。合同参考程序集设置为“构建”。

从 VS2010 更改为 VS2012(安装前已卸载 VS2010)后,我们的解决方案将在1m 30s内构建。安装 CodeContracts 安装包后,构建时间增加到5m 30s(因为二进制重写器现在正在重写程序集)。

这比在 VS2010 中构建解决方案所需的时间要长得多,完全重建大约需要 3m。

有没有人经历过类似的放缓或知道如何改善这种情况?

我们已经尝试禁用合同参考程序集的构建,但这并没有改变任何东西。

4

3 回答 3

0

我注意到静态检查器的速度严重下降,但不确定这是否适用于此。我不是很肯定,但我认为他们最近改变了缓存的工作方式。我认为它默认使用基于文件的缓存,但不再具有该选项。在项目的 CC 设置中,有一个选项可以指定用于缓存的 SQL 实例。我花了一段时间才把它弄好,但我在我的机器上使用了 SQL Express 实例。我检查了“缓存结果”并将“SQL Server”设置为.\SQLEXPRESS. 当工具运行时,当它不工作时,您应该在输出窗口中看到有关缓存的消息。

于 2013-08-22T19:01:20.173 回答
0

当我开始一个新的解决方案时,我要做的第一件事就是创建一个新的解决方案配置:

  1. 调试
  2. 调试 CC
  3. 发布

然后我只在 Debug CC 上启用代码契约。这使我可以在调试模式下快速编译,并在我接近提交时切换到代码契约构建。

于 2014-06-18T15:12:26.943 回答
0

我们有一个解决方案,其中有 90 多个项目在大多数项目上运行重写器。在 HP z420 上,并行构建,我可以在大约 1 分 40 秒内构建解决方案。根据要重写的 dll 的大小,重写器确实会为每个项目增加 2-10 秒。这是最新的 1.5.60409.11 版本。

于 2013-04-24T20:27:43.190 回答