31 votes

Rendre Visual Studio recharge automatiquement la solution lorsque les fichiers du projet changent

Sur le projet actuel sur lequel je travaille, il y a, en ce moment, beaucoup de modifications de code, ce qui signifie que la mise à jour depuis le contrôle de source peut parfois entraîner de nombreux changements de fichiers csproj. Comme nous le savons tous, VS2010 n'a pas de bouton "Recharger tout", mais vous devez recharger chaque projet et confirmer chaque rechargement.

Existe-t-il une méthode où le projet est automatiquement rechargé ou où l'IDE peut détecter cela et demander un rechargement de la solution?

29voto

Ray Booysen Points 10606

Enfin trouvé une solution:

http://lostechies.com/jimmybogard/2011/01/27/reloading-all-projects-with-vscommands/

Citant le site:

Très souvent, je me retrouve dans des situations où plusieurs projets ont été modifiés et Visual Studio demande de les recharger, un par un. Cela arrive lorsque je travaille beaucoup avec le contrôle de source, et que je fais des choses comme changer de branche, effectuer des fusions, ou simplement intégrer des modifications en amont. Je dois cliquer sur "Recharger" un million de fois pour chaque projet qui a changé sur le disque, et c'est très ennuyeux. De plus, VS oublie quels fichiers j'avais ouverts, donc chaque fichier sur lequel je travaillais est fermé.

Je suis peut-être le dernier utilisateur de VS à l'apprendre, mais une version lite gratuite du plugin VSCommands est disponible sur la Galerie Visual Studio qui fait exactement ce dont j'ai besoin - recharger tous les projets modifiés en une fois, en préservant quels fichiers j'avais ouverts:

2 votes

Lorsque le lien meurt, la solution est perdue pour toujours. Pourriez-vous s'il vous plaît améliorer votre réponse en décrivant la solution ? Merci!

0 votes

@RayBooysen: Vous voudrez peut-être mettre à jour le lien et supprimer les paramètres Google Analytics (ils fausseront les statistiques du site) - lostechies.com/jimmybogard/2011/01/27/… fera l'affaire.

0 votes

Juste voulu mentionner que si vous avez besoin de la fonctionnalité pro de VSCommand pour garder les fichiers précédemment ouverts ouverts après un rechargement de projet, consultez cette petite extension VS par Scott Hanselman : Recharge de l'espace de travail.

4voto

Jason Williams Points 31901

C'est pénible, mais la meilleure option que j'ai trouvée est de Fermer la solution avant de Récupérer le dernier code source.

S'il y a plus de deux projets modifiés, il est plus rapide de décharger et de recharger manuellement l'ensemble de la solution que de Récupérer et d'attendre que seuls les projets affectés se déchargent et se rechargent - le rechargement des projets est extrêmement lent (même en ignorant le fait de devoir cliquer sur le bouton OK pour chaque projet modifié).

(À mon avis, la vraie question est : Pourquoi pose-t-il cette question du tout ??? Si vous récupérez le dernier code source, il n'y a absolument aucune raison rationnelle pourquoi vous voudriez n'utiliser qu'une partie de celui-ci. C'est comme si un pompiste disait "Vous avez acheté du carburant. Voulez-vous que je le mette maintenant dans votre voiture, ou je le verse simplement par terre ?")

0 votes

Le problème est qu'avec la plupart des outils (dans notre cas VisualSVN ou AnkhSVN), vous ne savez pas ce qui a changé jusqu'à ce que vous cliquiez sur mettre à jour. Et puis vous jouez au jeu "recharger le projet" avec Visual Studio.

0 votes

@Ray Booysen: Je viens de réaliser une approche améliorée : Faites simplement GLV comme d'habitude. Si on vous demande si vous voulez recharger un projet modifié, cliquez sur "Ignorer" - vous pouvez parcourir rapidement tous les projets modifiés en les ignorant, puis fermer/rouvrir la solution par la suite pour tout mettre en synchronisation. Cela évite d'avoir à fermer/ouvrir la solution à chaque GLV - vous le faites uniquement si un projet a effectivement été modifié.

0 votes

C'est encore une danse que je préférerais ne pas faire avec VS. ;)

1voto

hko Points 517

Eh bien, cela ne fonctionne pas si les chemins de vos références ont changé dans le fichier csproj et que vous utilisez quelque chose comme l'outil de jonction sysinternals pour changer un lien symbolique. Par exemple, l'outil bascule le lien symbolique D:\Projects de D:\Baselines\1.0\Prjects à D:\Baselines\2.0\Projects, et parce que quelqu'un a changé la structure du dossier entre 1.0 et 2.0, votre fichier .csproj pointe soudainement le chemin du fichier DLL de ....\References\some.dll à ....\References\3rd-Party\some.dll. Je sais que c'est un cas spécial, mais cela arrive (par exemple, dans mon entreprise).

Il existe cependant une solution alternative, que je recommande fortement car elle présente d'autres avantages : l'extension Gestionnaire de chargement de solutions de VS 2010, pas très connue. Il reporte le chargement des projets en arrière-plan, ou jusqu'à ce qu'ils soient chargés manuellement, améliorant ainsi considérablement le temps de chargement de la solution pour les fichiers de solution volumineux. Il dispose d'un bouton "recharger la solution" dans son menu (malheureusement, il ne semble pas y avoir de raccourci) qui recharge ensuite toutes les solutions à partir de zéro, en sautant/chargeant en arrière-plan les solutions que vous avez définies. Un gars de Microsoft a commenté sur son blog qu'ils voulaient inclus quelque chose de similaire dans VS 2010, mais la fonctionnalité n'a pas tout à fait été intégrée.

Il peut prendre plus de temps alors qu'"un simple" clic et la mise à jour de 100 documents, mais cela a résolu mon problème de modifications de chemin de référence (relatif), et offre un bel accélérateur de vitesse chaque fois que j'ouvre une solution de taille au moins moyenne.

Modification en date d'octobre 2013 VS2012 inclut cette fonctionnalité par défaut. Du moins la partie chargement asynchrone. Malheureusement, la fonctionnalité "ne pas charger du tout" est uniquement possible en utilisant le "décharger le projet" manuellement dans VS2012. Mais comme la consommation de mémoire par projet a diminué avec VS2012, ce n'est plus un si gros problème.

-4voto

CharlesB Points 27070

Si vous avez coché l'option "détecter lorsque le fichier est modifié en dehors de l'environnement" dans la section "Documents" des options, les projets et les fichiers sont rechargés lorsqu'ils sont modifiés. Cela fonctionne pour moi lorsque je change de branches dans git.

Capture d'écran de l'option VS

0 votes

Jusqu'à VS 2010 (au moins), aucune fonctionnalité de rechargement automatique des fichiers de projet modifiés n'existe - vous devrez toujours jouer au jeu "Recharger le projet" avec Visual Studio si un fichier de projet est modifié en dehors de celui-ci.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X