A melhor definição para Team Foundation Server é, ao invés de um servidor ou serviço, uma plataforma. Porque ele é extensível. Assim como o Visual Studio Team Services, a versão SaaS do TFS.

E por isso é possível integrá-lo facilmente utilizando a estrutura Client Object Model com código .Net.

Client Object Model

Apesar de hoje termos disponível um conjunto de API’s REST, utilizar as client libraries disponibilizadas pela Microsoft é, ainda, a maneira mais fácil de fazer uma integração.

IC490584

Distribuição dos componentes

Até pouco tempo as dll’s não podiam ser distribuídas com uma aplicação e não existia um pacote, ou SDK. Portanto era preciso ter instalado o TFS na máquina do desenvolvedor para que fosse possível referenciar e usar as dll’s.

Junto com a versão 2013, foi lançado um pacote que resolvia esse problema, ou era possível instalar o Team Explorer e as dll’s estavam disponíveis. Mas, recentemente com a criação de um pacote Nuget com as bibliotecas disponíveis ficou ainda mais fácil!

Extracting effective permissions from TFS

Este nome comprido Extracting-effective-permissions-from-TFS, foi dado a uma ferramenta que começou a ser desenvolvida pelos ALM Rangers, que tem uma função muito solicitada por empresas que usam o TFS: um relatório com as permissões atuais dos usuários cadastrados. Ao invés de implementar essa feature no produto, ele foi “estendido”, demonstrando assim minha afirmação de o TFS ser mais que um servidor, e sim uma plataforma.

Eu já comentei sobre essa ferramenta no post Permissões no TFS/VSTS, e já que pretendo utilizá-la em um próximo post, vou mostrar no código dela o usuo do pacote Nuget.

Microsoft.TeamFoundationServer.ExtendedClient

Este é o pacote que iremos usar. É possível encontrar mais informações sobre os pacotes disponíveis e os seus usos em https://www.visualstudio.com/en-us/integrate/get-started/client-libraries/dotnet.

Alterando o código

A ferramenta está disponível na conta dos ALM Rangers no GitHub: https://github.com/ALM-Rangers/Extracting-effective-permissions-from-TFS
Mas como eu quero submeter uma alteração no futuro, vou fazer o fork para a minha conta, para isso é só acessar o link logado com a sua conta do GitHub e clicar em Fork.

2016-03-23 02_26_11-ALM-Rangers_Extracting-effective-permissions-from-TFS_ We are pleased to announc

Pronto! Já tenho um repositório clonado na minha conta.

2016-03-23 02_27_54-egomesbrandao_Extracting-effective-permissions-from-TFS_ We are pleased to annou

Agora é só clonar na máquina.

2016-03-23 02_24_04-Administrador_ Windows PowerShell

Ao abrir a solution no Visual Studio, em References você verá que as dll’s não estão disponíveis, elas não podem ser distribuídas com o código e eu não tenho o TFS instalado na minha máquina.

2016-03-23 02_34_57-Microsoft.ALMRangers - Microsoft Visual Studio (Administrator)

Vamos instalar o pacote Microsoft.TeamFoundationServer.ExtendedClient, mas antes vamos restaurar os que já estão sendo usados e para isso clique com o botão direito do mouse na solution, escolha Restore NuGet Packages. Como a solução já faz uso de um pacote ele será restaurado.

2016-03-23 02_41_49-Microsoft.ALMRangers - Microsoft Visual Studio (Administrator)

Agora sim, pesquise pelo pacote:

2016-03-23 02_51_41-Microsoft.ALMRangers - Microsoft Visual Studio (Administrator)

Clique em Options e escolha o projeto que deseja instalar o pacote:

2016-03-23 02_54_15-Microsoft.ALMRangers - Microsoft Visual Studio (Administrator)

Serão instalados pacotes adicionais que são referenciados neste que escolhemos, como por exemplo Microsoft.TeamFoundationServer.Client, se você acessou o link para os pacotes disponíveis, verá que este pode ser usado diretamente quando a sua aplicação acessa o TFS 2015, no caso precisamos usar o Extended para compatibilidade com versões anteriores. Outros pacotes serão baixados e solicitado as devidas aprovações.

Pronto! Perceba que os ícones de alerta nas referências desapareceu… porém…

Problema

Esse código faz referência a Microsoft.TeamFoundation.Git.Common, que não está disponível nos pacote NuGet!

2016-03-23 02_55_56-Microsoft.ALMRangers - Microsoft Visual Studio (Administrator)

Esse é um problema que irei resolver em um post futuro, por hora, vamos apenas comentar as linhas que fazem uso dessa referência:

2016-03-23 05_15_40-Microsoft.ALMRangers - Microsoft Visual Studio (Administrator)

CTRL + Shift + B… se reclamar que não tem o NuGet.exe

2016-03-23 03_42_46-Microsoft.ALMRangers - Microsoft Visual Studio (Administrator)

Baixe em https://www.nuget.org/nuget.exe e coloque no path indicado. Agora você deve conseguir buildar o código!

Esse post foi mais um setup de um projeto que estou iniciando e vou começar uma série de posts usando o pacote de extensão do TFS.

Emmanuel Brandão