The problem you will have here is that the project may contain files that are not in the same root folder. In large solutions, files that are outside the project directory are widespread.
Another problem that you will encounter is that not all files in the source control in the project directory must be included in the project.
Now, if you don't care about these cases, the easiest way to do this is to use the tf, tf folderdiff command line. You can give it two paths (which can be like on a server), and although the documentation does not indicate it clearly, you can bind a version option to it as follows:
tf folderdiff $/Path/To/Project;C1071 $/Path/To/Project;T /recursive
Examples of what you can use for are described here . It includes dates, change set numbers, label names, etc.
If you want to know how to do this, consider viewing the tf.exe utility in Reflector.NET or JustDecompile (or a similar application). They use the same API as you. Or simply invoke the tf folderdiff directly using the Process class.
I have a post explaining a bit more about the tf folderdiff command and how to use it.
The class containing the magic is here:
internal class FolderDiff : IEnumerable<FolderDiffFolder>, IEnumerable, IDisposable Name: Microsoft.TeamFoundation.VersionControl.Controls.FolderDiff Assembly: Microsoft.TeamFoundation.VersionControl.Controls, Version=11.0.0.0
It is internal, so you can see how this is done, but there is no easy access to the API to get the same result.