How to force VS 2010 to skip "builds" of projects which haven't changed?

Posted by Ladislav Mrnka on Stack Overflow See other posts from Stack Overflow or by Ladislav Mrnka
Published on 2011-12-06T10:15:18Z Indexed on 2012/09/12 9:38 UTC
Read the original article Hit count: 286

Filed under:
|
|
|
|

Our product's solution has more than 100+ projects (500+ksloc of production code). Most of them are C# projects but we also have few using C++/CLI to bridge communication with native code.

Rebuilding the whole solution takes several minutes. That's fine. If I want to rebuilt the solution I expect that it will really take some time. What is not fine is time needed to build solution after full rebuild. Imagine I used full rebuild and know without doing any changes to to the solution I press Build (F6 or Ctrl+Shift+B). Why it takes 35s if there was no change? In output I see that it started "building" of each project - it doesn't perform real build but it does something which consumes significant amount of time.

That 35s delay is pain in the ass. Yes I can improve the time by not using build solution but only build project (Shift+F6). If I run build project on particular test project I'm currently working on it will take "only" 8+s. It requires me to run project build on correct project (the test project to ensure dependent tested code is build as well). At least ReSharper test runner correctly recognizes that only this single project must be build and rerunning test usually contains only 8+s compilation. My current coding Kata is: don't touch Ctrl+Shift+B.

The test project build will take 8s even if I don't do any changes. The reason why it takes 8s is because it also "builds" dependencies = in my case it "builds" more than 20 projects but I made changes only to unit test or single dependency! I don't want it to touch other projects.

Is there a way to simply tell VS to build only projects where some changes were done and projects which are dependent on changed ones (preferably this part as another build option)? I worry you will tell me that it is exactly what VS is doing but in MS way ...

I want to improve my TDD experience and reduce the time of compilation (in TDD the compilation can happen twice per minute).

To make this even more frustrated I'm working in a team where most of developers used to work on Java projects prior to joining this one. So you can imagine how they are pissed off when they must use VS in contrast to full incremental compilation in Java. I don't require incremental compilation of classes. I expect working incremental compilation of solutions. Especially in product like VS 2010 Ultimate which costs several thousands dollars.

I really don't want to get answers like:

  • Make a separate solution
  • Unload projects you don't need
  • etc.

I can read those answers here. Those are not acceptable solutions. We're not paying for VS to do such compromises.

© Stack Overflow or respective owner

Related posts about c#

Related posts about .NET