There was a Visual Studio 2010 addin that took the .Net by storm recently. There was obviously a pent up demand for something like this that this addin respond too.
Problem: Team Build Definitions in Team Explorer cannot be put into folders. Long list of build definitions can become a pain and frankly are kind of ugly. Many/most programmers are a little OCD and not being able to organize "things" can be a little frustrating.
Request: Provide a means to organize Team Build Definitions that's easy to use and install, doesn't break existing users (i.e. not forced to install on our Team Build workstations, your co-worker's machines, etc) and yet allows builds to be organized into some kind of folder structure. Oh yeah, and provide the source to the solution so we can see how it was done...
"The Inmeta Build Explorer adds Folders to the Team Explorer Builds. This is a client based solution and works with the Visual Studio 2010 Team Explorer.
The folders are created based on separators in the Build Definition name. The default separator is the punctuation mark (.).
Terje Sandstrom provides more details in his Visual Studio–Build Folders extension for Team Explorer post
The Build explorer is based on using a convention of separators in the build definition names. See Brian Harry’s blog for a nice explanation and description of this.
Lars Nilsson who wrote the code base for this extension has blogged up some of the challenges he faced when implementing this. +
The extension have now had 300 downloads in 4 days [GD: Downloads are now 400+]! We’ve got very useful feedback, and fixed the issues that came in.
- It had problems loading more than 100 builds – now it handles 1000 without any sign of stress.
- Some people noted it had problems when the separator token also existed in the team project name, also fixed.
- And some others noted that they couldn’t use a whitespace as a separator! Something we hadn’t even considered! We fixed that too.
Playing around in the vsct file was an experience, but thanks to the VSCT Powertool i very soon got some kind of understanding of the guids, ids, symbolic names, bitmaps and what not. Well, at least i got my menus working. BTW: if you ever should end up developing a Visual Studio Addin, please remember to delete the previous debug version of the extension every time you change the visual studio command table file (vsct). If not, your changes will not be detected.
We wanted this implementation to be short and sweet, so the idea was to create simple placeholder UI nodes which redirected all commands to the actual Build definition node. Very simple, yet efficient. This design decision does have some consequences:
The project's source is available in the CodePlex project Build Folder extension for Visual Studio Team Explorer 2010
And we get a UML diagram to help explain the project's design.
Note: If you download the source, you might get a broken reference to the Fasterflect. This is easily fixed. Just use NuGet to add the Fasterflect package to the Solution and you'll be good to go.
So in the end we get our cake and can eat it too. We get a great VS plugin that solves a long standing Team Build organization problem and we get to see the source for how the addin was created.
Here’s a few more links you might find interesting:
- Visual Studio GalleryInmeta.VisualStudio.TeamExplorer.BuildExplorer
- CodePlex project, Build Folder extension for Visual Studio Team Explorer 2010
- Terje Sandstrom's post Visual Studio–Build Folders extension for Team Explorer
- Lars Nilsson's post Inmeta Build Explorer
- Brian Harry's post, Build Folders
- Shai Raiten's post, Build folders for Team Explorer
Page thumbnail curtsey of Rubbermaid Products