Estou tentando fazer com que o TFS (2013) ignore minha packages
pasta. Eu apaixonadamente não quero que a fonte seja controlada, pois estou usando o NuGet e é ótimo!
Tentei camuflar (parece não funcionar), tentei adicionar .tfignore
arquivos - nada é ignorado. Por que a equipe do TFS não adiciona uma opção para ignorar permanentemente uma pasta ou arquivo como muitos clientes do Subversion fazem ?!
Respostas:
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 des
após otf
). Seu conteúdo deve ser o seguinte: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 orepositories.config
arquivo em vez de permitir que o VS o regenere, você poderá usá-lo: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 chamadoNuGet.config
e coloque-o nesta nova pasta 2 . Seu conteúdo deve ficar assim: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.
fonte
Uma solução alternativa para o acima é o seguinte.
Vale ressaltar que essa solução precisaria ser aplicada por espaço de trabalho do TFS. Funcionou muito mais confiável para mim do que usando o
.tfignore
arquivo.Você pode ler mais sobre essa abordagem no artigo do blog Impedir que o TFS adicione pacotes NuGet instalados no controle de origem .
fonte
para pessoas que relatam que a opção .tfignore não estava funcionando com a configuração nuget.config, pode ser interessante - essas etapas finalmente funcionaram para mim:
fonte
Adicione um arquivo nuget.config em uma pasta .nuget na sua solução. Adicione o seguinte ao arquivo nuget.config:
O disableSourceControlIntegration é o que faz o truque para o Controle de versão do TFS.
fonte
Você precisa usar áreas de trabalho locais para
.tfignore
trabalhar. O.tfignore
arquivo deve estar na pasta que contém os arquivos ou pastas que você deseja ignorar.Portanto, se a estrutura da sua solução estiver assim:
Você colocaria o arquivo .tfignore em \ Project:
O conteúdo do .tfignore no seu caso seria:
\packages
Aqui está uma documentação para você: http://msdn.microsoft.com/library/vstudio/ms245454(v=vs.110).aspx#tfignore
fonte
packages
vez de\packages
relativo.Você pode defini-lo permanentemente
AppData\Roaming
para todas as soluções (antigas e novas)!No seu
%AppData%\NuGet\NuGet.Config
arquivo, adicione o seguinte antes da</configuration>
tag XML ...... você pode especificar qualquer caminho que desejar - o importante é colocá-lo fora do seu espaço de trabalho do TFS!
Agora você nunca precisa se preocupar com essas coisas novamente. A pasta da solução não conterá mais nenhum pacote; todas as soluções usarão como padrão o local dos pacotes personalizados.
NOTA - Isso funciona por usuário.
fonte
Defina sua solução para restaurar na compilação, a pasta e o arquivo de pacotes serão verificados, mas os pacotes não.
fonte
Se você estiver usando o Git com TFS, precisará adicionar um arquivo ".gitignore". Você pode fazer isso em "projeto de equipe | Configurações | 'adicionar arquivo ignorar'". Em seguida, abra o arquivo e remova o comentário da instrução ignorar interna para pacotes Nuget.
Se você estiver usando TFVC e tiver Espaços de Trabalho Locais configurados, poderá usar o arquivo ".tfignore" que respeita um formato idêntico ao arquivo Git. Eu acho que você precisa de "pacotes /".
fonte
Isso não funcionou para mim no visual studio online e no VS2013.
Dos outros comentários, parece que sua milhagem pode variar nesse momento. Isto é o que eu faço:
Verifique tudo, incluindo todos os pacotes.
Exclua todos os pacotes da sua solução e verifique esta alteração (isso removerá os pacotes do TFS)
Abra a solução e crie que adicionará os pacotes ao projeto, mas o TFS não os buscará.
fonte
A solução que funcionou para mim foi criar um .tfignore e a seguinte configuração no Nuget.Config:
Meu .tfignore contém esta linha:
[Estou usando o Visual Studio 2015 Update 2]
Isso não é o ideal e está atualmente registrado como um problema em aberto no github / nuget:
Facilite a omissão de pacotes do TFVC # 493
fonte
A resposta de Terje não funciona o tempo todo para mim, às vezes funcionará por um tempo, mas depois pendurará uma carga de "acrescentos" para mim novamente.
A única maneira que encontrei para resolver isso permanentemente é ocultar a pasta packages no meu espaço de trabalho.
Por exemplo:
fonte
Eu tive o mesmo problema.
/packages
deve funcionar, mas não funcionou para mim.packages*.*
funcionou.fonte