TFS2015 Server Side Plugins: referencia para dlls

A um tempo atrás, publiquei um post falando sobre uma mudança na instalação do TFS 2015, em que as dlls client no Application Tier não iriam mais ficar no GAC.

Conforme detalhado no post, qualquer aplicação que precisar utilizar o Object Model do TFS, deve utilizar o Pacote Nuget e empacotar as dlls junto com a solução. No entanto, isso não se aplica a server side plugins. Por rodarem junto com o processo do TFS, teoricamente não é necessário empacotar as dlls, muito menos referenciar o pacote Nuget.

Contudo, quem implementou server side pluggins antes da versão 2015, tinha o hábito de referenciar as dlls do próprio Visual Studio pois, como nas versões anteriores as dlls ficavam no GAC, mesmo que no Application Tier não existisse Visual Studio instalado (o que é comum), o plugin executaria sem problemas, pois as dlls do Object Model do TFS eram encontradas no GAC.

Mas no TFS2015 a história é outra. Você não pode mais referenciar as dlls do Visual Studio, pois se o mesmo não estiver instalado no Application Tier, seu pluggin irá dar erro ao tentar carregar essas dlls. Se seu TFS tiver sido atualizado da versão 2013, o problema pode ainda ser pior: seu plugin irá utilizar as dlls que estão no GAC, que são as dlls da versão 2013, e seu codigo poderá se comportar de maneira inesperada, pois estará utilizando a versão antiga. E foi dessa triste maneira que eu descobri esse problema.

Mas como fazer agora? No TFS 2015, todas as dlls do Object Model estão dentro da pasta bin do web site de instalação do TFS, tando as dlls server quanto as clients. Dessa maneira, para desenvolver server side plugins no TFS 2015, referencie as dll que estão dentro de:

 %ProgramFiles%\Microsoft Team Foundation Server 14.0\Application Tier\Web Services\bin

O livro Team Foundation Server 2015 Customization já trás essa referência corrigida.