c# - 如何强制 VS 2010 跳过未更改的项目的 "builds"?

标签 c# .net visual-studio-2010 build tdd

我们产品的解决方案有 100 多个项目(500+ksloc 的生产代码)。其中大多数是 C# 项目,但我们也很少使用 C++/CLI 来桥接与 native 代码的通信。

重建整个解决方案需要几分钟时间。没关系。如果我想重建解决方案,我希望它真的需要一些时间。不好的是完全重建后构建解决方案所需的时间。想象一下,我使用了完全重建,现在没有对解决方案做任何更改,我按下 Build(F6 或 Ctrl+Shift+B)。如果没有变化,为什么需要 35 秒?在输出中,我看到它开始“构建”每个项目 - 它没有执行真正的构建,但它做了一些消耗大量时间的事情。

这 35 秒的延迟真是让人头疼。是的,我可以通过不使用构建解决方案而只使用构建项目 (Shift+F6) 来缩短时间。如果我在我目前正在处理的特定测试项目上运行构建项目,它将需要“仅”8+s。它要求我在正确的项目上运行项目构建(测试项目以确保构建依赖的测试代码)。至少 ReSharper 测试运行器正确地识别出只有这个单一的项目必须被构建并且重新运行测试通常只包含 8+s 的编译。我目前的编码Kata是:不要碰Ctrl+Shift+B。

即使我不做任何更改,测试项目构建也需要 8 秒。它需要 8 秒的原因是因为它还“构建”了依赖项 = 在我的情况下,它“构建”了 20 多个项目,但我只对单元测试或单个依赖项进行了更改!我不希望它触及其他项目。

有没有办法简单地告诉 VS 只构建完成了一些更改的项目以及依赖于已更改项目的项目(最好将这部分作为另一个构建选项)?我担心你会告诉我,这正是 VS 正在做的事情,但以 MS 方式......

我想改善我的 TDD 体验并减少编译时间(在 TDD 中,编译可能每分钟发生两次)。

更令人沮丧的是,我在一个团队中工作,大多数开发人员在加入这个团队之前曾经从事过 Java 项目。所以你可以想象当他们必须使用VS而不是Java中的完全增量编译时,他们是如何生气的。我不需要 incremental compilation of classes .我希望对解决方案进行增量编译。尤其是像 VS 2010 Ultimate 这样的值(value)数千美元的产品。

我真的不想得到这样的答案:

  • 制定单独的解决方案
  • 卸载不需要的项目
  • 等等

我可以阅读这些答案 here .这些不是可接受的解决方案。我们不会花钱让 VS 做出这样的妥协。

最佳答案

默认情况下,当您运行单个项目时,Visual Studio 将始终在您的解决方案中执行每个项目的构建。即使该项目不依赖于您解决方案中的所有其他项目。

转到工具 | 选项 | 项目和解决方案 | 构建并运行并选中“仅在运行时构建启动项目和依赖项”框。 从现在开始运行您的项目(F5 键)时,Visual Studio 将只构建您的启动项目以及解决方案中它所依赖的那些项目。

关于c# - 如何强制 VS 2010 跳过未更改的项目的 "builds"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8398225/

相关文章:

c# - 如何避免 Winforms 中 ToolStrip 左侧出现 3 个像素间隙?

.net - 在 SQL2005 中部署 WCF 客户端程序集

c# - 0MQ windows GUI 最佳实践

c++ - 在 MFC 中更改 listcntrl 的方向时出错

C#多文本文件处理

c# - WP7 应用程序中 GUID 的用途是什么?

c# - 如何将通用存储库与 DDD(域模型 + 持久性模型)一起使用?

c# - 非等待线程在 api 返回后停止执行,这是一个已知的错误,还是有人可以解释发生了什么?

c# - 获取类c#的路径

.net - 字符串对象的 GetHashCode() 值是否唯一?