Obtenir TFS pour ignorer mon dossier packages

J'essaie de faire en sorte que TFS (2013) ignore mon dossier packages. Je ne veux pas passionnément qu'il soit contrôlé par la source car J'utilise NuGet et c'est génial!

J'ai essayé de masquer (cela ne semble pas fonctionner), j'ai essayé d'ajouter des fichiers .tfignore - rien n'est ignoré. Pourquoi L'équipe TFS n'ajoute-t-elle pas simplement une option pour ignorer définitivement un dossier ou un fichier comme le font de nombreux clients Subversion?!

278
demandé sur Palec 2014-06-10 18:43:49

12 réponses

Voici le deal: nous devons dire à NuGet et TFS d'ignorer les paquets, car NuGet essaie de faire des choses liées au contrôle des sources qu'il ne devrait absolument pas faire (mauvaise forme, Microsoft!). Donc, vous devez faire deux choses.

Tout d'Abord, ajoutez un fichier nommé .tfignore pour le dossier de la solution (notez l'absence de s après l' tf). Son contenu devrait être le suivant:

\packages

Qui indique à TFS d'ignorer votre dossier packages. Maintenant, vous pensez que cela ignorerait également le fichier repositories.config. Mais il ne sera pas. Pourquoi? Qui sait, les moyens de Microsoft sont étranges et mystérieux. En fait, je pense que cela fait partie des choses NuGet que je décris ci-dessous, mais si cela est corrigé à l'avenir et que vous voulez garder le fichier repositories.config au lieu de laisser VS le régénérer, vous devriez pouvoir utiliser ceci:

\packages
!\packages\repositories.config

OK, alors maintenant grâce à notre fichier .tfignore, TFS ignore vos paquets. Tout est beau, non? faux , parce que NuGet fait le tour avec votre contrôle de source et en ajoutant les paquets à vos modifications en attente. Alors maintenant, disons à NuGet de le couper déjà.

Créez un dossier appelé .nuget à la racine de votre dossier de solution.1 Maintenant, créez un fichier appelé NuGet.config, et de le placer dans ce dossier2. Son contenu devrait ressembler à ceci:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
</configuration>

Et maintenant vos paquets devraient rester hors du contrôle des sources. N'oubliez pas d'ajouter les fichiers NuGet.config et .tfignore au contrôle de source afin qu'ils ne se perdre.

EDIT: Si vous rencontrez des problèmes, vous pouvez supprimer votre dossier packages, vérifier cette modification, puis suivre les étapes ci-dessus.

Aussi EDIT: Il semble que cela n'arrivera pas avec les nouvelles versions de Nuget. Alors peut-être que si vous passez à VS/TFS 2017, ce problème s'éclaircira sans sauter à travers les cerceaux ci-dessus.

1. Ajoutez le dossier à L'aide de L'Explorateur de contrôle de Source; cliquez avec le bouton droit sur la solution- > Ajouter dossier->.nuget
2. Quand j'ai compris cela en utilisant VS 2013, j'ai trouvé le NuGet.config devait aller dans le .dossier nuget. Même si vous avez déjà un NuGet.fichier de configuration à la racine de votre dossier de solution (parce que, disons, votre entreprise a un flux nuget interne). Cependant, certains dans les commentaires ont indiqué que cela fonctionne bien dans la solution racine dans VS 2015. Personnellement, je suis passé à l'utilisation de TFS en mode git, donc je ne peux pas tester. En outre, si vous avez un flux personnalisé, assurer que vous avez à la fois le flux personnalisé et nuget.org comme clés dans le Nuget.fichier de configuration, ou parfois TFS décidera au hasard qu'il ne peut pas restaurer les paquets.

443
répondu Pharylon 2017-04-19 15:21:45

Une solution alternative à ce qui précède est la suivante.

  • Ajouter le dossier packages à TFS (sans fichiers ni sous-dossiers)
  • Cliquez avec le bouton droit sur le dossier Packages
  • Clic Gauche Avancé
  • Cliquez Sur Manteau

Il convient de noter que cette solution devrait être appliquée par espace de travail TFS. Cela a fonctionné beaucoup plus sûrement pour moi plutôt que d'utiliser le fichier .tfignore.

Vous pouvez en savoir plus sur cette approche dans l'article de blog Prevent TFS de l'ajout de paquets NuGet installés au contrôle de source .

46
répondu Ryan Gates 2016-10-10 15:50:56

Pour les personnes signalant que le .l'option tfignore ne fonctionnait pas avec le nuget.configuration cela pourrait être intéressant-ces étapes ont finalement fonctionné pour moi:

  1. Supprimer tout dans mon dossier packages
  2. Assurez-vous que TFS n'a aucune modification autour de ce dossier en attente
  3. Fermer VS
  4. rouvrez VS et rechargez la solution-en utilisant Nuget restore pour recharger packages remarque aucune modification n'est en attente pour le contrôle de source TFS
20
répondu Adam Stewart 2015-06-22 11:36:20

Vous devez utiliser des espaces de travail locaux pour que .tfignore fonctionne. Le fichier .tfignore doit se trouver dans le dossier qui contient les fichiers ou dossiers que vous souhaitez ignorer.

Donc, si votre structure de solution ressemble à ceci:

\Project
   \Packages
   \OtherStuff
   foo.cs

Vous mettriez votre .tfignore le fichier dans \ Project:

\Project
   \Packages
   \OtherStuff
   foo.cs
   .tfignore

Le contenu de La .tfignore dans votre cas serait:

\packages

Voici de la documentation pour vous: http://msdn.microsoft.com/library/vstudio/ms245454 (v=vs. 110).aspx # tfignore

7
répondu Daniel Mann 2014-06-10 16:13:39

Ajouter un nuget.fichier de configuration dans un .dossier nuget dans votre solution. Ajoutez ce qui suit au nuget.fichier de configuration:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
</configuration>

Le disableSourceControlIntegration est ce qui fait l'affaire pour le contrôle de Version TFS.

7
répondu Terje Sandstrøm 2014-10-28 20:41:46

Vous pouvez définir en permanence cette fois-off dans votre AppData\Roaming pour toutes les solutions (ancien et nouveau)!

Dans votre fichier %AppData%\NuGet\NuGet.Config, Ajoutez ce qui suit juste avant la balise XML </configuration>...

<config>
  <add key="repositoryPath" value="C:\NuGetPackages" />
</config>
<solution>
  <add key="disableSourceControlIntegration" value="true" />
</solution>

...vous pouvez spécifier n'importe quel chemin - l'important est de le mettre en dehors de votre espace de travail TFS!

Maintenant, vous n'avez plus jamais à vous soucier de ce genre de choses. Votre dossier de solution ne contiendra plus de packages; toutes les solutions utiliseront par défaut votre emplacement de packages personnalisés plutôt.

NOTE-cela fonctionne sur une base par utilisateur.

5
répondu Heliac 2016-09-22 10:03:41

Définissez votre solution pour restaurer lors de la construction, le dossier des paquets et le fichier des paquets seront vérifiés mais pas les paquets.

2
répondu Just TFS 2014-06-13 17:49:44

Si vous utilisez Git avec TFS, vous devez ajouter un ".gitignore de fichier". Vous pouvez le faire dans "projet d'équipe / Paramètres / 'Ajouter un fichier ignorer'". Ensuite, ouvrez le fichier et décommentez l'instruction ignore intégrée pour les paquets Nuget.

Si vous utilisez TFVC et que vous avez configuré des espaces de travail locaux, vous pouvez utiliser le ".tfignore " fichier qui honore un format identique au fichier Git. Je pense que vous avez besoin de " paquets/".

1
répondu MrHinsh - Martin Hinshelwood 2014-10-28 19:52:21

Cela n'a pas fonctionné pour moi tout à fait sur visual studio online et VS2013.

  • Cliquez Avec Le Bouton Droit Sur Solution > Activer La Restauration Du Package NuGet. Cela va ajouter le Nuget.fichier de configuration à la solution

entrez la description de l'image ici

  • Ajouter le .tfignore. Je le fais normalement en ajoutant un fichier texte à la racine de la solution, en le laissant détecter cela, puis exclure en cliquant sur "détecté ajouter" > clic droit ignorer.

entrez la description de l'image ici

  • Ajouter les paquets à .tfignore et lui dire d'inclure référentiel.config

entrez la description de l'image ici

D'après les autres commentaires, il semble que votre kilométrage puisse varier à ce stade. C'est ce que je fais:

  • Vérifiez tout, y compris les paquets.

  • Supprimez tous les paquets de votre solution, puis vérifiez cette modification (cela supprimera les paquets de TFS)

  • Ouvrez la solution et construisez qui ajoutera les paquets au projet mais TFS ne les récupérera pas.

1
répondu David Wilton 2015-07-16 10:49:48

La solution qui a fonctionné pour moi était de créer à la fois un .tfignore et le paramètre suivant dans le Nuget.Configuration:

<configuration>
  ...
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>  
  ...
</configuration>

Mon .tfignore contient cette ligne:

\packages

[j'utilise Visual Studio 2015 Update 2]

Ce n'est pas idéal, et est actuellement enregistré comme un problème ouvert sur GitHub / nuget:

Rendre plus facile d'omettre les paquets de TFVC #493

1
répondu redcalx 2016-04-27 12:09:54

La réponse de Terje ne fonctionne pas tout le temps pour moi, parfois cela fonctionnera pendant un moment, mais ensuite il va pend une charge de "Ajoute" pour moi encore une fois.

La seule façon que j'ai trouvée pour résoudre ce problème de manière permanente est de masquer le dossier packages dans mon espace de travail.

Par exemple:

Type      Server                Local
============================================
Active    $/Work/Main           C:\Code\Main
Cloaked   $/Work/Main/Packages
0
répondu DaveShaw 2017-05-23 12:10:26

J'ai eu le même problème. /packages devrait fonctionner mais ne l'a pas fait pour moi. {[1] } a fonctionné.

0
répondu coding4fun 2015-03-03 16:59:23