Currently (VS 2010, TFS 2010), when working with a C# project, choosing the "Exclude from project" results in two actions: the file is removed from the project, AND a delete is pended on the file in TFS. Undoing the delete in TFS also undoes the Exclude from project.
This coupling is undesirable. VS should NEVER pend a delete to TFS unless I chose an option clearly named "Delete".
The real-world scenario where I run into this is refactoring which involves moving files from one project to another. If I simply drag the file in the solution explorer, VS copies the item and pends an Add at the new location. This break the link with the history at the old location, plus requires me to separately delete the file from the old location.
Instead, I'm forced to use a rather clumsy process:
1. Exclude the file(s) from their current location.
2. Close the solution.
3. Undo all the unwanted deletes that have been pended to TFS.
4. Move the files one by one to the new location
5. Re-open the solution
6. Add the items to the new location with Add Existing Item or Show All Files|Include in Project.
On a related note, the MOVE operation in TFS needs to support moving more than one item at a time, but I'll submit that as a separate connect item.