Build

Upgrading a Custom Build from TFS 2010 to TFS 2012

While TFS 2012 contains many useful features for the development team, one of the difficulties upon upgrading is the lack of a simple way to convert pre-existing custom build templates. It’s not a difficult process by itself, it just takes time, and some trial and error.

First, the XAML from Visual Studio 2010 contains many references to the old assemblies and some duplicate entries.  The duplicates need to be removed and any version references to the 10.0 version of the assemblies need to be changed to the 11.0 version of the assemblies.  After removing the duplicates there may be no version references to update.

Second, make sure visual studio isn’t reporting any import errors in the XAML. Extra namespace may be referenced and need to be imported.

Third, if the build process is using any custom assemblies, the references in the projects need to be updated to the 11.0 version of the assemblies, and they need to be recompiled to be .NET 4.5.  Check in the modified assemblies to source control for the build controller to pick up.

Finally, I’ve ran into problems with some of the activities from the old TFS 2010 default template which is what my custom build process was based on.  The LabelSources activity seems to give a null reference error when trying to label the workspace.  However, the workspace can be be labeled using the LabelWorkspace activity which seems to work.

I can’t guarantee these are all the problems you may encounter, but hopefully having a good listing of the issues I encountered will help out some others.  Here’s a list of the blogs and msdn references that were useful in helping to upgrade the TFS builds.

http://blogs.msdn.com/b/jpricket/archive/2012/07/17/tfs-2012-cleaning-up-workflow-xaml-files-aka-removing-versioned-namespaces.aspx

http://osnabrugge.wordpress.com/2012/08/08/lessons-learned-in-upgrading-my-tfs-2010-build-templates-to-tfs-2012/

http://msdn.microsoft.com/en-us/library/dd647548.aspx