- We have just released an 0.9 version of the Team Explorer build browser. You can download it at
A customer of us (DnBNor) wanted to display builds in a tree view and we agree: a large collection of builds is hard to navigate in a flat list.
The hierarchy is defined by splitting the build definition names by a token (default: '.' ). This token can be changed in the options dialog (context menu on root folder).
This is what the Inmeta Builds Explorer looks like when expanded.
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 tree nodes are not generated until the user click on the root node. The reason is simple: All Team Explorer plugins are loaded async and since we are dependent on the actual UI node in the original build list, timing issues where imminent. So we do not regenerate the tree on Refresh/load: we wait.
The existing Build plugin does not reveal a lot of interfaces, thus I had to revert reflection to invoke the correct method in the original build UI node, when executing context menu commands.
I tried to use the existing public interfaces to search for the build UI nodes using the CanonicalName, but with no success. We therefore use reflection to get hold of the corresponding build UI node.
- If you select 'Edit build definition' from the Inmeta Builds Explorer and then save, the selected item will jump back to the original Build definition node.
I highly recommend this article.
Code will soon be available on CodePlex.