Long list of Team Builds getting you down? Wish you could put them in folders? Don't want to wait for a future TFS version? Here's a VS addin for ya...

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...

Solution: Inmeta.VisualSt​udio.TeamExplor​er.BuildExplore​r

image_2

"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.
  • ...

Brian Harry's post on it,Build Folders, made me laugh. I mean look at all those build def's.You can see why he thought this plugin was cool...

untitled

For more depth in some of the challenges and learning that happened when building this, check out Lars Nilsson'sInmeta Build Explorer post

"...

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

image

And we get a UML diagram to help explain the project's design.

image

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:

 

Page thumbnail curtsey of Rubbermaid Products

Follow the Discussion

Comments Closed

Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums,
or Contact Us and let us know.