‘AlwaysCreate’ forces project to be re-built


Have you lost time because Visual Studio always thought that a project was out-of-date? Recently had a customer who faced this issue. He migrated his project from VS2008 to VS2010. Rebuilt the whole project and tried to run. He saw this message box pop up…



If you click ‘Cancel’ and do a build, then in the output window you’ll see this…

1>—— Build started: Project: TestAlwaysCreateIssue, Configuration: Debug Win32 ——
1>Build started 3/12/2013 6:24:04 AM.
1>  Creating “Debug\TestAlwaysCreateIssue.unsuccessfulbuild” because “AlwaysCreate” was specified.

This message is quite confusing and doesn’t give a hint as to what actually is wrong and why the project is being re-built! Visual Studio internally decides the project is out-of-date and hence decides to build again before execution.

You won’t lose time if the project is a small one but think about a solution having numerous projects a build/relink is going to take forever to complete (I’ve faced this personally for some reason this rebuild issue vanished after sometime).


So what causes this false rebuild?

To figure why Visual Studio decides that project is out-of-date you’ll have to enable project system logging in visual studio. See following blog on how to enable this feature in Visual Studio.

http://blogs.msdn.com/b/vsproject/archive/2009/07/21/enable-c-project-system-logging.aspx, for convenience I’ll paste in here relevant part from the blog…


To enable logging in the Visual C++ project system you just have to add a snippet to a .config file:

  1. Since it can be difficult to recover from a damaged devenv.exe.config file, consider copying the file to devenv.exe.config.original before modifying it so you have a backup copy you can revert to if things go awry.
  2. Open a text editor with admin privileges.
  3. Open your VisualStudioInstallFolder\Common7\IDE\devenv.exe.config file.  Note this will be in %ProgramFiles(x86)% on 64-bit Windows.
  4. Add this snippet to your devenv.exe.config file just below the <configSections /> block:
    1. For Visual Studio 2012 and below…
      <switches><add name=”CPS” value=”4″ /></switches>
    2. For Visual Studio 2013
      <switches><add name=”CPS” value=”Verbose” /></switches>
  5. Save the text file.


Above block of xml will enable diagnostic logging of build activities in Visual Studio. To view the diagnostic logs from Visual Studio you should either have a debugger hooked onto visual studio or you should have DebugView. DebugView is a tool that helps viewing application output which the application does via OutputDebugString API.

Output in DebugView should look like as follows once you enable project system logging in Visual Studio. Screenshot…


Now follow these steps…

  1. Start DebugView 
  2. Rebuild
  3. Build
  4. In DebugView window search for the string ‘missing’ or ‘not up to date’, better still to save the DebugView log entries and open it in notepad and then search.
  5. In this case we found the following message…
    [2968] Project ‘C:\Projects\TestAlwaysCreateIssue\TestAlwaysCreateIssue\TestAlwaysCreateIssue.vcxproj’ not up to date because build input ‘C:\PROJECTS\TESTALWAYSCREATEISSUE\TESTALWAYSCREATEISSUE\NONEXISTENT.H‘ is missing.
  6. Copied above line of text from DebugView. The message clearly says why visual studio thinks the project is not up-to-date! The reason being nonexistent.h file is missing from disk.
  7. The file nonexistent.h file was deleted from disk on purpose to reproduce this issue.

Its quite easy to reproduce the issue, just add a .h file from disk to the project and then rename/delete this file, rebuild and build. You’ll see that Visual Studio says the project is not up-to-date. See below screenshot…



Resolution is quite easy, just remove the non-existent file from the project. 


Yes to get to the root cause we had to do some magic but that’s how it is for now. This behavior is there in VS2012 as well. So hope this saves some of your valuable time. If you know of a better or straight forward way to solve this do let us know. I’d like to thank Steve Horne (Sr. EE) at Microsoft who troubleshot a similar case long back, found all this information out of that case. Thanks Steve!

Please remember to undo the changes made to devenv.exe.config.

Comments (19)

  1. Kimpan says:

    Most of the time the 'AlwaysCreate' is set when there are references in the project to files that don't exist. Header files, files referenced to as resources, readme.txt etc. Missing .cpp files should cause compile errors so no problem there.

    Here is yet another error I discovered. It has to do with COM-projects with separate proxy/stub projects built in x64. The intermediate directory in x64 for proxy/stub is set to the same directory as the COM-project, causing both projects to be rebuilt and all the other projects depending on them.

    This has been lingering ever since VS2010 just  as the Register Output-flag doesn't work for x64. Microsoft, how about fixing it? VS2010, VS2012 & VS2013. STILL SAME ERROR.

  2. Ruud van Gaal says:

    I had this in Visual Studio 2013, where that config file does not seem to exist anymore. I've found that when opening the Solution Explorer's project tree, the files which were not found won't have the little triangle in front of the filename (with which you normally can see a list of symbols in that file).

  3. Nibu Thomas says:

    @Ruud van Gaal

    I do see the config file in the following folder…

    "C:Program Files (x86)Microsoft Visual Studio 12.0Common7IDEdevenv.exe.config"

    Are you looking under C:Program Files. If you use %PROGRAMFILES% that's the path which explorer will resolve the environment var on a 64 bit OS.

    Probably I should remove %PROGRAMFILES% from the text.

    From your comment I guess you found the root cause, if not, apart from what's already in the article, further help needed let me know.

    Nibu Thomas

    Microsoft Support

  4. thomas woelfer says:

    i have a solution where the "Project is out of date message" is appearing when i try to start the Debugger. i have no idea why vs thinks, the project is out of date. The message appears even after a "rebuild all" with no Errors or warnings during the build.

    i was thus trying to use the method you suggest in order to find the reason why vs keeps thinking that particular Project is out of date. i did edit the config file (and restartet visual Studio afterwards), and i did download and run debugview.

    i did then do a "rebuild all", and lots of Messages where written to the debug view window. Next, i cleared debug views Display, and hit "run in Debugger". Now, not a single message appeard in debug view, but the "Project is out of date" message still appeared.

    Any suggestions what i'm doing wrong or how i can find out why it thinks the Project is out of date?


    -thomas woelfer

  5. Nibu Thomas says:

    Hi Thomas,

    What version of Visual Studio?

    After a rebuild, do a build 'build'. Check debug view again for missing file message.


  6. thomas woelfer says:

    hi Nibu.

    This is vs 2013 rtm. i did do a "rebuiild solution", started debugview, and then did a "build solution". during that build. the "Special" Project got build. However, there is no useful Information in debugview. all i get are the following 2 lines  (repeatedly for ~270 times, so there are actually 546 lines in debug view:):

    [3700] The build property "BuildingInsideVisualStudio" with value "true" is being overridden with the value "true" by the global property provider "Microsoft.VisualStudio.ProjectSystem.Build.CommonBuildPropertiesProvider".

    [3700] CPS Warning: 0 :

    That's it. nothing else is displayed. Maybe i need some other settings in the config file for 2013?


    -thomas woelfer

  7. Nibu Thomas says:

    I'll create a repro on VS2013 and check this out. I haven't tested the steps given in the blog for VS2013. I'll get back to you, maybe by next week.

  8. thomas woelfer says:

    hi Nibu.

    Any news yet ?


    -thomas woelfer

  9. Nibu Thomas says:

    Sorry Thomas, didn't look into this yet, too busy with work. You should hear from me soon.

  10. Nibu Thomas says:


    Looks like there were some changes in the configuration file schema or values. With the configuration given in this blog I didn't see missing file warnings so you are right there.

    I referred the documentation and made some changes. This is how the changed diagnostics section in the config file should look like…




    <add name="CPS" value="Verbose" />




    The change looks to be with the value given for CPS. 'Verbose' works for me.

    Created a repro project in VS2013, I have a missing file in the project so for me debugview shows following output…


    00000266 53.95375824 [4308] CPS Verbose: 0 :

    00000267 53.95384216 [4308] Project 'C:Userssomuserdocumentsvisual studio 2013ProjectsLeakerLeakerLeaker.vcxproj' not up to date because build input 'C:USERSNTHOMASDOCUMENTSVISUAL STUDIO 2013PROJECTSLEAKERLEAKERLEAKER – COPY.H' is missing.


    I my project indeed I have a file named: LEAKER – COPY.H which is missing from hard disk.

    Please check if this change helps you? If so please let us know, I'll have to modify this blog entry for VS2013.


    -Microsoft Support

  11. thomas woelfer says:

    hi Nibu,

    thank you very much, that did it.

    (at least in my ie11, there's a "pre" key in your previous instruction that does not belong there, but without it, the logging works fine.)

    i was able to detect what made vs 2013 think the project was allways out of date (a missing header file).

    just as a note to anybody else trying to figure out stuff like this: it helps a lot, when in debugView one is searching for the string "not up to date "…


    -thomas woelfer

  12. Nibu Thomas says:

    Cool! I'll update blog as well.

    PS: Sorry for the <pre> tag. 🙂 Intention was to make it look neat.

  13. Venkat says:

    After getting annoyed by the issue for long, I finally decided to investigate what was behind the apparently unnecessary prompt from VS2012 to build some project even just after finishing building. In my case, the cause turned out to be two projects in the solution putting their intermediate files (obj files) in the same folder. As discussed at the following link and links listed there, when multiple projects put their objs in the same folder, rebuild can result in the deletion of the objs of earlier built project.


    Another thing: Even in VS2012, I had to change CPS value to "Verbose" instead of "4" to get useful debug info in DebugView.

  14. Nibu Thomas says:

    Thanks Venkat for sharing your solution.

  15. Debby Mendez says:

    Same as Venkat, I had to use "Verbose" instead of "4" even with Visual Studio 2012.  Please update the article.   Thanks.

  16. Larry says:

    I've had this same problem, developing in C++ on VS 2010.  

    Also, if I built an application that would compile without errors, building it again cause some code to be re-compiled.  An attempt to build a fresh compile should just come back after doing nothing.  "Rebuilding", of course should build everything again.  

    Anyway, a Microsoft technical support person who works the C++ forum named May Wang helped me solve the problem last week.  

    I went to the "View – Solution Explorer" drop down of the offending module, removed all of the C++ and header files, then added everything back with the "Project – Add Existing Item…".  

    That solved both problems.  Now, after building the app, I can run it without that annoying "This project is out of date" popup, and if I build the app, comes back after doing no work if it is up to date.  

    I only learned of the existence of this page after May Wang showed me the solution.  

    I hope this will assist somebody.  

  17. Christiaan Koster says:

    I found an easier fix (also works on vs2013:

    I changed the option in "Tools->Options->Projects and Solutions->Build and Run->MSBuild project build output verbosity" from Minimal to Diagnostic.



  18. Nibu Thomas says:

    If this works (I haven't verified yet) then its indeed easy. Thank you Christiaan for sharing this.

  19. TXWizard says:

    My search for a solution to the problem that is the subject of this thread. A quick review of the Solution Explorer turned up the culprit, which was the README.TXT file created by the New Project Wizard. When I was scanning the files in the file explorer, in search of another file, I noticed that it was still there, and deleted it, as I have done, without issue, for decades in Visual C++ 6 projects.

    The bottom line is that if it's listed in the Solution Explorer, it had better be there!