Aqui está o acordo: temos que dizer ao NuGet e ao TFS para ignorar os pacotes, porque o NuGet está tentando fazer coisas relacionadas ao controle de origem que absolutamente não deveriam estar fazendo (má forma, Microsoft!). Então você tem que fazer duas coisas.
Primeiro, adicione um arquivo nomeado .tfignore
à pasta da solução (observe a falta de s
após o tf
). Seu conteúdo deve ser o seguinte:
\packages
Isso diz ao TFS para ignorar sua pasta de pacotes. Agora, você pensaria que isso também ignoraria o repositories.config
arquivo. Mas não vai. Por quê? Quem sabe, os caminhos da Microsoft são estranhos e misteriosos. Na verdade, acho que faz parte do material do NuGet que descrevi abaixo, mas se isso for corrigido no futuro e você quiser manter o repositories.config
arquivo em vez de permitir que o VS o regenere, você poderá usá-lo:
\packages
!\packages\repositories.config
OK, agora, graças ao nosso .tfignore
arquivo, o TFS está ignorando seus pacotes. Está tudo bem, certo? ERRADO , porque o NuGet está mexendo com seu controle de origem e adicionando os pacotes às alterações pendentes. Então agora vamos dizer ao NuGet para cortá-lo já.
Crie uma pasta chamada .nuget
na raiz da pasta da solução. 1 Agora, crie um arquivo chamado NuGet.config
e coloque-o nesta nova pasta 2 . Seu conteúdo deve ficar assim:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
E agora seus pacotes devem ficar fora do controle de origem. Lembre-se de adicionar os arquivos NuGet.config
e .tfignore
ao controle de origem para que nunca se percam.
EDIT: Se você estiver tendo problemas, convém excluir a pasta de pacotes, fazer o check-in dessa alteração e seguir as etapas acima.
EDITAR TAMBÉM: Parece que isso não acontecerá nas versões mais recentes do Nuget. Portanto, talvez se você mudar para o VS / TFS 2017, esse problema será resolvido sem passar pelos aros acima.
1 . Adicione a pasta usando o Source Control Explorer; clique com o botão direito do mouse na solução-> Adicionar pasta ->. nuget
2 . Quando descobri isso usando o VS 2013, descobri que o NuGet.config tinha que ir na pasta .nuget. Mesmo se você já tiver um arquivo NuGet.config na raiz da pasta da solução (porque, digamos, sua empresa possui um feed de pepitas interno). No entanto, alguns comentários indicaram que ele funciona bem na raiz da solução no VS 2015. Pessoalmente, mudei para o uso do TFS no modo git, por isso não posso testar. Além disso, se você possui um feed personalizado, verifique se possui o feed personalizado e o nuget.org como chaves no arquivo Nuget.config, ou às vezes o TFS decide aleatoriamente que não pode restaurar os pacotes.