Community Pick: Many members of our community have endorsed this article.

"Discrepancy" error from VS 2008 after migrating from VSS 2005 to TFS 2010

Megan BrooksSQL Server Consultant
Retired SQL Server database developer and administrator; active MS SQL Server consultant for T-SQL, SSRS, and SSIS
Published:
After installing Visual Studio 2010 (see my tip on that here) and migrating Visual SourceSafe 2005 to Team Foundation Server 2010, I needed to connect my remaining Visual Studio 2008 solutions (the ones that are really SQL Server 2008 Business Intelligence Design Studio projects) to also use TFS 2010. I found the VS 2008 Team Explorer download and applied VS 2008 SP1 and the TFS 2010 forward compatiblity patch (supplied on the TFS 2010 DVD) to it so that everything worked.

I often work remotely over VPN and converting to TFS 2010 yielded a big performance improvement (even though I was using the VSS LAN accelerator previously). The only problem was that now every time I opened a a VS/BIDS 2008 solution an alert box with the following message popped up:

There appears to be a discrepancy between the solution's source control information about some project(s) and the information in the project file(s).

To resolve this discrepancy it will be necessary to check out the project file(s) and update them.  If the check out fails, however, and the solution is closed without saving, you will see this warning again the next time you open this solution.

OK, fine. The check out did not fail. I saved the solution before closing it. And the warning continued to pop up every time I opened the solution again.

I noticed that some or all of the project files in the solution were indeed being checked out, and I surmised that there was something in those project files that needed to be updated.  I also noticed that when I checked them back in, TFS reported that nothing had changed and proceeded to simply undo the changes.

That would be OK if no changes were needed, but changes were needed.  The way I finally resolved it was to identify each project that was being checked out, right click the project name, change something (anything! -- almost) in the project properties so as to "dirty" it, change that property right back to what it was again, and then close the properties dialog, save, and check in the project.

Once the project properties were dirtied, VS 2008 fixed whatever it was bothering it and the annoying alert box no longer appeared; nor did any automatic checkouts occur.

If you do this, you do need to change a project property that is something that is actually stored in the project file. You can tell by checking the project back in and then making the change and changing it back and closing the project properties dialog. If changing/changing back causes the project file to check out then you got it. Otherwise try another property.  Exactly what you change will depend upon what kind of project it is.
0
5,321 Views
Megan BrooksSQL Server Consultant
Retired SQL Server database developer and administrator; active MS SQL Server consultant for T-SQL, SSRS, and SSIS

Comments (3)

Megan BrooksSQL Server Consultant

Author

Commented:
In this article I very briefly summarized the migration process for VSS to TFS 2010 for use with VS 2008. The summary was a little too brief, though. After migrating the VSS data to TFS and installing the patches for VS 2008, it is necessary to connect Team Explorer to TFS, "map" the TFS working folder(s), and "Get latest version" from TFS (which you can do at the same time that you map). Otherwise if you have the files from VSS already loaded locally, VS 2008 continues to use VSS.

My main intent in this article wasn't really to describe how to do the migration itself, but I don't want to create any confusion by leaving out major steps.
Megan BrooksSQL Server Consultant

Author

Commented:
If you are working on a project from more than one workstation, after fixing the project file be sure to get the latest version of it from TFS on all the other workstations. Otherwise you will continue to see the alert box on those workstations.

Commented:
We have 2 solutions and hundreds of projects.

I migrated from VS 2008 SP1 to VS 2010 SP1 and was also receiving the error:

There appears to be a discrepancy between the solution's source control information . . .

I would open solution1, allow it to update the projects, then open solution2, only to get this error again.

I analyzed the solution files and found the following:
 
Root Cause:

solution1.sln and solution2.sln files are inconsistent with each other in regards to the project source control bindings.

Example:

solution1.sln

    SccProjectUniqueName6 = Project1\\Project1.csproj
    SccProjectName6 = \u0022$/Project1\u0022,\u0020HSBAAAAA
    SccLocalPath6 = Project1

solution2.sln

    SccProjectUniqueName6 = Project1\\Project1.csproj
    SccLocalPath6 = .
    SccProjectFilePathRelativizedFromConnection6 = Project1\\

Solution:

I fixed this issue by manually modifying the solution files to be consistent in notepad. I copy and pasted the source control info from solution1.sln into solution2.sln for projects they had in common.

I eventually wrote a small utility to automate this.

https://github.com/bentoo/MergeSolutionSourceControl

Have a question about something in this article? You can receive help directly from the article author. Sign up for a free trial to get started.

Get access with a 7-day free trial.
You Belong in the World's Smartest IT Community