A little while back, I posted here about resolving some issues that come up when opening up TFS 2010 build templates for the first time in Visual Studio 2012.
There are two more tips I need to mention that helped me with resolving these issues.
During my last post, I indicated that a tip to help resolve this problem was to re-select some of the TFS Object types in the Variables/Arguments windows. In addition, you’ll see that the version of these types still point to [10.0.0.0]. With VS2012, the TFS reference version have been bumped up to 220.127.116.11, so this means, we need to do the same with our references.
In my case, I house all my build templates under one umbrella project, which has several TFS references, and as you can see, still points to version 10.
Simply remove and re-add these references with their version 18.104.22.168 counterparts (screenshot below).
Once all your references have been upgraded. You may still see errors in your build templates that say something like Type ‘IBuildDetail’ is not defined. Turns out the culprit is in the build templates, where there are new references inserted, but because the existing version 10.0.0.0 references are still in there, it causes confusion. To fix this, I suggest doing so manually, which involves opening up your build templates in code mode.
Simply right-click on your build template file, and choose “View code”. This opens it up in XAML editor. As you can see below, there is a reference to Microsoft.TeamFoundation.Build.Client for what seems like version 22.214.171.124 and version 10.0.0.0. We need to make the version 11 entry fully qualified.
So we go from this:
I removed the duplicate reference entries, and fully qualified the newer version. Do this for any and all TFS references, and your errors should disappear. Hope this has been helpful.
[UPDATE – 08/29/2013]
After checking in all my changes, I kept getting the below error on my build servers causing my controllers and agents not to start up properly.
Turns out TFS didn’t like the specific version on the Microsoft.TeamFoundation.Build.Workflow assembly. I simply had to remove the specific version notation in my build template code, and let TFS figure out the right version to use.
xmlns:mtbw="clr-namespace:Microsoft.TeamFoundation.Build.Workflow;assembly=Microsoft.TeamFoundation.Build.Workflow, Version=126.96.36.199, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a xmlns:mtbwa="clr-namespace:Microsoft.TeamFoundation.Build.Workflow.Activities;assembly=Microsoft.TeamFoundation.Build.Workflow, Version=188.8.131.52, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a