One way that you can avoid this problem is procedural:
(works for any project except for a "Web Site" project, which has no project file):
Instead of doing a "get latest" from your source control tool, always do an "open from source control" inside of Visual Studio, and do a get latest from Solution Explorer. VS will only pull files that belong to the project.
It's not a perfect answer -- when you perform merges, you will likely end up pulling down every file in your branch, but it has worked very well for us.
(of course, this requires that you are using a source control tool that offers VS integration -- it also requires that you add any non-compiled, but required files (icons, etc) to your project, or they will not be pulled down by VS).