I should be clearer. If the example looks like:
Master Project
Project 1.vcproj
Test1.cpp
Test1.h
Project 2.vcproj
Test2.cpp
Test2.h
Project 3.vcproj
Test3.cpp
Test3.h
Project 3 Sub Project 1.vcproj
Test3Sub1.cpp
Test3Sub1.h
then the files contained within each .vcproj are being treated as self contained, i.e. Test2.cpp has no knowledge of Test1.h. Say for example that Project 1 builds a .lib and Project 2 consumes it. Selection of a function in Project 2 contained within the .lib from Project 1 will yield no definition results. This makes good sense for project organization and building, although, less than desirable for tagging. In this example, each of these projects are dependent on one another to construct the master application. It would help tremendously if tagging crossed projects and was based on the master solution. The above example presented a simple example to illustrate the problem. The solution may be very complex, e.g. 20 projects, hundreds of headers, etc.