It's a difficult discussion. Most programmers would want to exclude a file from the build by removing it from the solution explorer, some users would be very confused to see a file compile that is not included in the solution explorer. This is how normal programming works.
Agreed. I came to the Arduino world from C/C++/C# and have been using Visual Studio since it first came out. Then there is arduino that will only compile ALL files in the project folder.
In visual micro the default is to compile all files in the project folder but this is an option in tools>options>vmicro. The default is on but in the future the default might be off because it's very confusing for people who know VS.
This doesn't seem to be the case in my setup. VM won't compile anything unless it's in the VS Project 'sources' or 'headers' folders. I see the option ('Compile All Project Folder Sources') you are referring to in tools->Options->Vmicro. but it is set to TRUE and VM still refused to compile files in the project folder unless they were also listed in the Project's 'Sources' or 'Headers' folders. I see that the 'Compile Files In Project' option is set to TRUE as well (says the default is FALSE), so this might explain what I'm seeing. Seems strange that you have both options available, when they seem to be mutually exclusive. In this case, with both set to TRUE, it appears that the 'Compile Files in Project' option takes precedence.
The arduino ide can not see files from other folders (linked sources) so VM does need to look at the solution to work out what should be compiled.
There isn't a right answer except to say that if you assume that anything you want compiled is in the solution explorer then you are in a good place for the future and your project can be more easily known and understood.
In the future I suspect it would be better to entirely dump the concept of compiling files that are not in the solution explorer because it is utterly confusing. However some Arduino users who don;t understand normal IDE's with solution/project explorer might become confused.
VS2017 also released ability to work with Folders instead of projects. This seems closer to how arduino works so might be supported in the future as an alternative way to manage source code without projects.
It's a changing world and VM just tries to glue the different practises together in some way.
Plus the override option is new, the default when not set might change now that it has been tested and proven not to cause chaos.
Well, I would argue that the 'proven not to cause chaos' may be a little premature. In my case at least, the combination of the two options in Tools>Options>VMicro and the 'Local Files Override Library Files' certainly caused at least a little bit of 'chaos' for me! .
So there are (I think) three different settings that might effect what files are or are not compiled - two in Tools>Options>Visual Micro, and one in vMicro>Compiler. This suggests there are 8 different combinations - is there a matrix anywhere that describes what the different combinations do?
BTW, as another small buglet; when I moused over the explanations for the two options in Tools>Options>Vmicro to see the full text, the result was a popup that ran off both sides of my 24" 1920 x 1200 monitor, making it impossible to read the entire message. As a former help file author myself, I know these flyover windows are a godsend normally, but trying to cram too much text into them defeats the purpose.