Visual Studio or VS is my weapon of choice.
But sometimes, it’s stupidity can’t be expressed with words…
Sometimes, Visual Studio will always rebuild projects, even though they have recently been built and there are no changes. If you build
, and then run
the project will build. If you haven’t disabled the “projects out of date”-dialog, it will pop up and ask you to rebuild.
Within VS, it will match a set of rules to figure out if a project is up to date or not.
Here is how to find out what rules are causing a project to always build.
This applies to both C# and C++ projects.
The simplest way to discover this problem, and probably the most annoying about this is this popup box when running the project (unless you’ve disabled this dialog).
Another clue is output text. Regardless how many times you build the project, it’s never up to date.
1>------ Build started: Project: always-build, Configuration: Debug Win32 ------ 1> always-build.vcxproj -> R:code-samplesvisual-studio-always-buildingDebugalways-build.exe ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
The first dialog will only show when “prompt to build” is selected.
Open devenv.exe.config
as Administrator. Default path for VS2013 is C:Program Files (x86)Microsoft Visual Studio 12.0Common7IDEdevenv.exe.config
.
Add this section to the configuration file.
<system.diagnostics> <switches> <add name="CPS" value="Verbose" /> </switches> </system.diagnostics>
About here:
Restart VisualStudio.
Download and run DebugView from Microsoft (https://technet.microsoft.com/en-us/library/bb896647.aspx).
Build the project.
In DebugView, you’ll see many lines of diagnostics information. One line in particular is the interesting one, that’s the line with not up to date because
. If you can’t find that line, select the top line and hit Ctrl-F
to open the search dialog, and search for not up
.
In this case, it’s because it’s missing a file referenced in the solution, [9300] Project 'R:code-samplesvisual-studio-always-buildingalways-build.vcxproj' not up to date because build input 'R:CODE-SAMPLESVISUAL-STUDIO-ALWAYS-BUILDINGNON-EXISTING-HEADER.HPP' is missing
.
Remove that file from the solution, and try to rebuild.
When you get this text from the output window, you’re successful.
========== Build: 0 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
Just don’t forget to revert / delete the diagnostics settings in devenv.exe.config…
The project and code from this post is available at GitHub.