Pour continuer la découverte du TFS SDK, je vous propose de découvrir comment retrouver l’adresse du Team System Web Access (TSWA) d’un serveur Team grâce au TFS SDK. Pour info je n’ai trouvé aucune documentation concernant cette partie du SDK sur la MSDN.
Pourquoi avoir besoin de récupérer les URL ? Tout simplement lorsque l’on étend les fonctionnalités de TFS vers d’autres outils tiers. Par exemple, dans une fonctionnalité de BOWIE 2010 d’envoie de Work Items par mail, je voulais, pour chacun des work items, avoir un lien qui pointe vers la page d’édition du work item comme indiqué ci-dessous :
Pour cela nous avons besoin d’une instance de la classe TeamFoundationServer que l’on trouve dans l’assembly Microsoft.TeamFoundation.Client.dll. Il faut ensuite récupérer une instance de la classe TswaClientHyperlinkService via la méthode GetService de l’objet TeamFoundationServer :
TeamFoundationServer server = TeamFoundationServerFactory.GetServer("http://localhost:8080/tfs/DefaultCollection");
TswaClientHyperlinkService tswa = server.GetService<TswaClientHyperlinkService>();Grâce à cette classe nous allons pouvoir récupérer les url du Team System Web Access. Dans mon cas, pour récupérer l’url d’un work item à partir de son Id, il suffit d’utiliser la méthode GetWorkItemEditorUrl(int id) :
int wiId = 3;
Uri wiUri = tswa.GetWorkItemEditorUrl(wiId);
On obtient une URL du style : http://localhost:8080/tfs/web/wi.aspx?pcguid=7e6d1e34-000d-4adb-ad5e-93db70187570&id=3
Cette URL permet d’accéder à la page suivante :
Voici quelques unes des méthodes de la classe TswaClientHyperlinkService permettant de récupérer les url d’objets TFS:
- GetChangesetDetailsUrl(int changeSetId)
- GetHomeUrl(Uri projectUri)
- GetShelvesetDetailsUrl(string shelvesetName, string shelvesetOwner)
- GetSourceExplorerUrl(string serverItemPath)
- GetViewBuildDetailsUrl(Uri buildUri)
- GetWorkItemQueryEditorUrl(Uri projectUri, string queryPath)
- …
La prochaine fois je vous ferai découvrir l’API de Build du TFS SDK, via le type IBuildServer.