Comment empêcher Visual Studio de "toujours" extraire les fichiers de solution?

152

Pour apparemment aucune raison, chaque fois que j'ouvre ma solution, Visual Studio extrait le fichier sln.

Si je le compare à la version précédente, il n'y a aucun changement. Mais c'est vraiment frustrant car tout le monde a vérifié la solution.

J'utilise VS 2008 et TFS 2008, tous deux SP2.

Une idée sur la façon dont je peux empêcher cette chose de se produire? Ou est une fonctionnalité / bogue du fournisseur de contrôle de source TFS pour VS?

CodeClimber
la source
avez-vous un projet de test unitaire dans le cadre de la solution?
Mitch Wheat
1
TFS prend en charge les extractions simultanées et tant qu'il n'y a pas de modification du fichier .sln, l'extraction multiple ne pose pas de problème.
Dirk Vollmar le
5
Lorsque les fichiers * .sln subissent des changements réels, ils sont un horrible cauchemar à fusionner car les projets qui s'y trouvent reçoivent des identifiants arbitraires mais pas uniques. Je suis un grand partisan des paiements simultanés, mais je garde la plupart de nos * .sln verrouillés.
Richard Berg
3
CECI EST FIXE DANS VS2013 !!! J'ouvre la même solution en 2012 et il vérifie .sln, ouvert en 2013 et cela reste clair.
felickz
2
J'ai vu cela de temps en temps avec toutes les versions de Visual Studio 2010 et jusqu'à la dernière version, Visual Studio 2015 Update 3. Cela se produit environ la moitié des fois où j'ouvre une solution, et cela semble être plus fréquent pour les solutions avec de nombreux projets.
Tore Østergaard le

Réponses:

121

Cela se produit lorsque ce qui suit se trouve dans le fichier .sln:

GlobalSection(ExtensibilityGlobals) = postSolution
    MyGlobalProperty = AnyValue
EndGlobalSection

J'ai trouvé que Enterprise Library en avait ajouté un. Je l'ai supprimé, vérifié la solution, fermé puis rouvert, et plus d'extraction automatique.

Graham Clark
la source
21
On dirait que le package Unity NuGet a pu faire cela dans mon fichier de solution dans VS 2010. J'ai supprimé cette section et mon problème d'extraction automatique a été résolu. Merci Graham!
Dan Mork
14
deux de mes technologies préférées - TFS et EntLib - quelle paire de chouchous.
1
J'ai une telle section mais je ne souhaite pas la supprimer car elle contient des données que je souhaite conserver - et maintenant? MS a fermé ce numéro comme "non reproductible" - stupide? connect.microsoft.com/VisualStudio/feedback/details/573538/…
mattanja
Le commentaire de Dan ajoute les informations nécessaires - il n'est pas nécessaire de supprimer toutes les sections globales - juste la partie qui semble être ajoutée par le package unity nuget.
Jordan0Day
toujours le même en 2012
BlackICE
6

À partir de la mémoire, si vous utilisez le menu Outils, Options et sélectionnez le panneau Contrôle de la source, Environnements , il devrait y avoir quelques options pour configurer la façon dont l'EDI s'interface avec le contrôle de version.

Je pense que certaines de ces options contrôlent la vérification du comportement ouvert .

jussij
la source
1
oui ... ils vous permettent de commander automatiquement, de demander à partir du paiement ou de ne rien faire ... mais rien qui aide à résoudre ce problème
CodeClimber
ne pouvez-vous pas simplement dire "non, ne vérifiez pas" quand il vous y invite?
Scott Marlowe
J'aurais aimé être le seul développeur de l'équipe ... malheureusement, je ne peux pas compter sur la diligence de tous les développeurs
CodeClimber
CodeClimber, chaque fois que vous démarrez VS, il effectue une extraction automatique et vous voulez que cela s'arrête et la désactivation de l'extraction automatique ne résout pas le problème. Qu'est-ce que c'est?
veight
1
Pour ceux qui n'ont pas les "Environnements" dans leur liste d'options, changez votre connexion de "Local" à "Serveur" (source: stackoverflow.com/questions/26843300/… )
VenerableAgents
5

Juste au cas où, comme moi, vous ne pourriez pas le faire fonctionner et que vous constatiez qu'un ou plusieurs projets sont également vérifiés, j'ai trouvé une solution plus simple. Notez le (s) projet (s) qu'il ne cesse d'extraire. Accédez à Fichier - Contrôle de la source - Modifier le contrôle de la source, puis dissociez les projets en question. Cliquez sur OK, Enregistrer tout, puis revenez dans Modifier le contrôle de la source et liez le projet à la solution. J'espère que cela fonctionnera pour d'autres

utilisateur408720
la source
3

Bien que n'empêchant pas le problème en premier lieu, l'utilisation libérale de la commande "Undo Unchanged" de Team Foundation Power Tools annulera (surprise surprise) la modification en attente si aucune modification n'a été apportée.

Dave Roberts
la source
Lien mis à jour pour Team Foundation Power Tools: marketplace.visualstudio.com/…
Jaider
3

Autorisez l'extraction, puis comparez les deux fichiers. Si VS a ajouté quelque chose comme

<Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" />

vous rencontrez un bug VS avec une solution dans VS2008 mais pas porté sur VS2005

Consultez ce lien pour plus de détails:

Luis Filipe
la source
Aucun projet dans la solution n'a cette ligne de XML
CodeClimber
2

Le fichier de la solution Visual Studio est en cours d'extraction silencieuse via un ou plusieurs projets de la solution à l'aide de la bibliothèque d'entreprise Microsoft - je crois que cela a à voir avec l'utilitaire de configuration de la bibliothèque d'entreprise qui permet la gestion de la configuration des différents blocs d'application - http : //msdn.microsoft.com/en-us/library/ff649479.aspx

Consultez cette publication Microsoft Feedback: http://connect.microsoft.com/VisualStudio/feedback/details/737184/globalsection-extensibilityglobals-postsolution-checks-out-sln-file-on-open

Nigel Belham
la source
merci pour le lien Nigel, toute l'équipe rencontre ce problème
Baldy
1

Il s'agit d'une fonctionnalité / d'un bogue de l'un des systèmes de projet en cours de chargement dans la solution. Essayez de supprimer différents types de projets (C #, VB, C ++, site web, application web, test unitaire, silverlight ...) jusqu'à ce qu'il disparaisse; c'est ta réponse.

Richard Berg
la source
0

Enregistrez-vous vos fichiers avant d'effectuer la comparaison? Cela m'est arrivé il y a quelque temps et je n'arrête pas de dire qu'il n'y a pas de changement entre les fichiers, mais après un certain temps, je me suis rendu compte que je n'avais pas enregistré les fichiers auparavant et que c'était en comparaison avec la version sur le disque, pas la version en mémoire.

Chaque fois que vous ouvrez une solution dans Visual Studio, il effectue certaines opérations qui peuvent entraîner la modification de vos fichiers .sln ou de projet, puis il vous demandera d'extraire le fichier. Cela se produit lorsqu'il y a des changements dans la structure des dossiers dans la machine des développeurs, ou lorsqu'ils n'ont pas les mêmes versions de tous les fichiers. Peut-être que quelqu'un a ajouté un projet dans un dossier et qu'un autre développeur a le même projet à un autre endroit. Un autre cas que je vois que cela se produit était lorsque nous avons une solution avec certains projets C ++, pour une raison quelconque, l'un de ces projets C ++ avait un fichier .res avec des chemins absolus. Une fois que ce fichier a été généré automatiquement par VS, il a conservé le changement de la machine du développeur à la machine du développeur.

Je vous suggère d'ouvrir votre fichier .sln et de rechercher des chemins absolus ou des chemins relatifs qui peuvent ne pas exister dans certaines machines de développement, en fonction des fichiers qu'ils obtiennent de votre contrôle de source.

Carlos
la source