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

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

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

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

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 这样售价数千美元的产品。

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

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

  • 我可以阅读这些答案 here .这些都是 Not Acceptable 解决方案。我们不会为 VS 做出这样的妥协而付费。

    最佳答案

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

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

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

    相关文章:

    c++ - 使用 cmake 和 vs2010 链接到静态 boost 库,无需自动链接

    C# 线程和内存泄漏

    c# - 如何对 List<Tuple<int, double>> 进行排序

    c# - 141 是可以同时制作动画的 WPF 面板项目的最大数量吗?

    c# - 是否可以从TPL Task派生以从方法返回更多详细信息?

    c# - 订购列表时不对字段或方向进行硬编码

    c# - GridView 不显示所有行

    c# - .NET 与 Siemens PLC S7 200 的接口(interface)

    c - 无法使用 sizeof() 检查内存分配大小

    visual-studio-2010 - VS 2010 - 复制类/接口(interface)的完整类型名称的简单方法?