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.
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.
Pronto! Já tenho um repositório clonado na minha conta.
Agora é só clonar na máquina.
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.
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.
Agora sim, pesquise pelo pacote:
Clique em Options e escolha o projeto que deseja instalar o pacote:
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!
Esse é um problema que irei resolver em um post futuro, por hora, vamos apenas comentar as linhas que fazem uso dessa referência:
CTRL + Shift + B… se reclamar que não tem o NuGet.exe
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