206 votes

Visual Studio déplace le projet dans un autre dossier

Comment déplacer un projet vers un autre dossier dans Visual Studio ? Je suis habitué à cette structure dans mes projets.

-- app
---- Project.Something
---- Project.SomethingElse

Je veux renommer tout l'espace de nom SomethingElse en SomethingNew, quelle est la meilleure façon de le faire (sans aller manuellement dans le fichier .sln) ?

0 votes

Utilisez-vous TFS comme fournisseur de contrôle de source ?

0 votes

Voulez-vous renommer uniquement le dossier ou l'ensemble du projet ?

0 votes

Projet, dossier et espace(s) de noms.

212voto

Igor ostrovsky Points 4246

J'ai essayé la suggestion de supprimer et de réinsérer le projet, mais la correction des dépendances peut être pénible.

J'utilise cette approche :

  1. Déplacez le dossier du projet.
    • Si le projet est en contrôle de source, effectuez le déplacement en utilisant les commandes de contrôle de source.
  2. Modifiez le fichier de la solution dans un éditeur de texte. Il ne devrait y avoir qu'un seul chemin à modifier.

0 votes

Définitivement plus facile ! Mais, après avoir déplacé et modifié la solution en utilisant l'édition de texte, le fichier de la solution s'affiche en bas comme un fichier texte ordinaire. Comment puis-je me débarrasser de ce problème ?

2 votes

"Si le projet est dans le contrôle de source, faites le déplacement en utilisant les commandes de contrôle de source." Pouvez-vous nous expliquer comment faire ?

3 votes

@AnishV Par exemple, si vous utilisez Git, tapez git mv ... au lieu de mv ... . Voir git-mv pour plus d'informations.

211voto

Hans Passant Points 475940

Supprimez le projet de votre solution en cliquant avec le bouton droit de la souris dans la fenêtre de l'explorateur de solutions et en choisissant Supprimer. Déplacez l'ensemble du dossier du projet, y compris les sous-répertoires, là où vous le souhaitez. Réintroduisez le projet dans votre solution.

Les noms des espaces de noms sont quelque chose de complètement différent, il suffit d'éditer le code source.

6 votes

C'est ce que j'ai fait, mais j'ai pensé qu'il y avait un moyen de faire tout cela sans supprimer l'ensemble du projet, ce qui m'oblige ensuite à réinstaller toutes les dépendances.

36 votes

Déchargez tous les projets dépendants de la solution, avant de supprimer le projet que vous voulez déplacer. De cette façon, ils ne détectent pas la suppression et les références du projet restent intactes. Après avoir déplacé le projet et l'avoir réinséré dans la solution, vous pouvez à nouveau charger les projets dépendants.

13 votes

N'oubliez pas que la suppression d'un fichier dans TFS, puis sa réimportation dans TFS dans un autre répertoire ou projet, entraîne la suppression de l'historique des modifications du fichier.

47voto

Manu Points 330
  1. Fermez votre solution dans VS2012
  2. Déplacez votre projet vers le nouvel emplacement
  3. Ouvrez votre solution
  4. Sélectionnez le projet dont le chargement a échoué
  5. Dans la fenêtre de l'outil Propriétés, il y a une entrée modifiable "Chemin du fichier" qui vous permet de sélectionner le nouvel emplacement du projet.
  6. Définir le nouveau chemin
  7. Cliquez à droite sur le projet et cliquez sur recharger

4 votes

Cela fonctionne très bien et semble être la méthode la plus rapide et la plus simple, malgré les autres réponses bien plus votées. Il existe un article à ce sujet ici : msmvps.com/blogs/deborahk/archive/2010/06/30/

0 votes

@MikeRosenblum Le lien est cassé, le nouveau lien est le suivant blogs.msmvps.com/deborahk/

1 votes

Ne fonctionne pas dans VS2012. L'article lié ne mentionne également que VS2010.

6voto

dthal Points 126

Résumé : renommer et déplacer dans VS2019 avec git, conserver l'historique git, tirer un peu parti de R#, mise à jour automatique des références de projets dépendants (important pour les sln's avec de nombreux projets, nous en avons >200).

J'ai utilisé les étapes suivantes pour renommer et déplacer des projets C# dans Visual Studio 2019. Ce processus utilise R# pour ajuster les espaces de noms. L'historique git est conservé en faisant un "git mv" (en évitant l'ajout/la suppression de l'historique).

Deux phases : 1) renommer le projet en place et 2) déplacer le projet.

(Utilisation d'un conseil de base2 de décharger les projets).

Renommer

  1. VS | Explorateur de solutions | Clic droit sur le projet | Renommer (par exemple, Utils.Foo en Foo).
  2. VS | Explorateur de solutions | Clic droit sur le projet | Propriétés | Modifier le nom de l'assemblage, l'espace de noms par défaut et les champs d'informations sur l'assemblage.
  3. Faire 1 et 2 pour le projet de test correspondant (par exemple, Utils.Foo.Tests)
  4. VS | Explorateur de solutions | Clic droit sur les projets (production et test) | Refactor | Ajuster les espaces de noms
  5. Les fichiers XAML qui utilisent le projet doivent être mis à jour (manuellement ou à l'aide d'un système de recherche et de remplacement global approprié).
  6. Reconstruire tout
  7. Engagez-vous ! (pour valider les changements avant les déplacements)

Remarque : Le dossier dans l'Explorateur Windows conserve l'ancien nom à ce stade (par exemple, Utils.Foo). Ceci est corrigé dans les étapes de déplacement.

Déplacement

Cette méthode : 1) conserve l'historique git, 2) tire parti de R# pour ajuster les espaces de noms de manière atomique et 3) met à jour les projets dépendants en masse (évite l'édition manuelle fastidieuse des fichiers sln et csproj dépendants).

  1. décharger tous les projets de la solution (afin que la suppression du projet cible ne déclenche pas de changements dans les projets dépendants)

    VS | sélectionner tous les dossiers de la solution sous la solution | cliquer à droite sur Décharger les projets

  2. déplacer les dossiers en utilisant git (pour que l'historique soit maintenu)

a) ouvrir l'invite de commande de Developer pour 2019

b) git status (pour illustrer "rien à commiter, arbre de travail propre")

c) git mv le projet par exemple, git mv " C:\Code\foo\foo\Utils.Foo " " C:\Code\Foo "

d) git status pour voir/vérifier le changement

  1. supprimer le projet

VS | Solution Explorer | sélectionner le projet | clic droit | Supprimer (puisque tous les projets sont déchargés, cela ne supprimera PAS les références à ce projet dans les projets dépendants).

  1. ré-adjoindre le projet (au nouvel emplacement dans l'arbre de l'explorateur de solutions)

a) VS | Solution Explorer | sélectionner le dossier parent cible | clic droit | Ajouter | Projet existant

  1. recharger tous les projets

IMPORTANT : Confirmez que les fichiers *.csproj des projets dépendants ont été mis à jour.

(VS | Team Explorer | Changes | double-cliquer sur n'importe quel csproj dépendant listé | inspecter-vérifier le changement du chemin de ProjectReference)

  1. Fixer manuellement les chemins d'accès dans le fichier *.csproj qui a été déplacé.

Utilisez Notepad++ (ou un autre éditeur de texte) pour corriger les chemins. Souvent, cela peut être fait avec une simple recherche et un remplacement (par exemple, ../../../../ en ../../).

Cela mettra à jour...

a) Références de GlobalAssmeblyInfo.cs

b) les chemins vers les paquets

c) les chemins d'accès aux fichiers du diagramme de validation des dépendances

d) les chemins d'accès aux jeux de règles (par exemple, <CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet> )

  1. Fermer et ré-ouvrir la solution (pour remettre les références du projet en bon état)

Enregistrer tout, fermer la solution, je préfère supprimer les dossiers bin et obj pour ne pas avoir d'historique, rouvrir la solution.

  1. Valider

a) VS | Team Explorer | Changements

i) vous devriez voir les modifications échelonnées qui révèlent les fichiers qui ont été déplacés. ii) devrait voir les projets dépendants (*.csproj) qui ont été joliment mis à jour examinez les diffs csproj et remarquez que les chemins ont été joliment mis à jour ! (c'est la magie qui permet d'éviter la mise à jour manuelle laborieuse des fichiers csproj à l'aide d'un éditeur de texte).

b) Dans l'Explorateur Windows, vérifiez que l'ancien emplacement est vide.

c) Nettoyer la solution, reconstruire la solution, exécuter les tests unitaires, lancer les applications dans le sln.

  1. Engagez-vous !

5voto

Gonzalo Méndez Points 163

Ce qui a marché pour moi, c'est de :

  1. Retirez le projet de la solution.
  2. Editez le fichier du projet avec un éditeur de texte.
  3. Mettre à jour tous les chemins relatifs vers les "paquets". Dans mon cas, j'ai dû modifier ..\packages a ..\..\..\packages depuis que j'ai déplacé le projet dans un dossier plus profond.
  4. Rechargez le projet dans la solution.

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