Visual Studio déplacer le projet vers un autre dossier

182

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 noms SomethingElse en SomethingNew, quelle est la meilleure façon de le faire (sans entrer manuellement dans le fichier .sln)?

Egor Pavlikhin
la source
Utilisez-vous TFS comme fournisseur de contrôle de code source?
Bermo
Voulez-vous renommer uniquement le dossier ou l'ensemble du projet?
Charles Gargent
Projet, dossier et espace (s) de noms.
Egor Pavlikhin le

Réponses:

175

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

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

Hans Passant
la source
6
C'est ce que j'ai fait, mais je pensais qu'il y avait un moyen de faire tout cela sans supprimer tout le projet, ce qui me fait ensuite rajouter toutes les dépendances.
Egor Pavlikhin le
31
Déchargez tous les projets dépendants de la solution avant de supprimer le projet que vous souhaitez déplacer. De cette façon, ils ne détectent pas la suppression et les références du projet restent intactes. Une fois que vous avez déplacé le projet et l'avez de nouveau ajouté à la solution, vous pouvez à nouveau charger les projets dépendants.
base2 du
13
N'oubliez pas que la suppression d'un fichier dans TFS, puis sa réimportation dans TFS dans un autre emplacement de répertoire ou projet, entraîne la suppression de l'historique des modifications de fichier.
Paul
Je veux le faire sans perdre l'historique des changements afin que je puisse toujours faire des comparaisons quand je le veux.
user734028
197

J'ai essayé la suggestion de supprimer et de rajouter le projet, mais réparer les dépendances peut être pénible.

J'utilise cette approche:

  1. Déplacez le dossier du projet.
    • Si le projet est sous contrôle de code source, effectuez le déplacement à l'aide des commandes de contrôle de code source.
  2. Modifiez le fichier de solution dans un éditeur de texte. Il ne devrait y avoir qu’un seul chemin à modifier.
Igor Ostrovsky
la source
Certainement plus facile! Mais, après avoir déplacé et modifié la solution à l'aide de l'édition de texte, le fichier de solution s'affiche ci-dessous comme un fichier texte normal. Comment m'en débarrasser?
Abriel
2
"Si le projet est sous contrôle de code source, effectuez le déplacement à l'aide des commandes de contrôle de code source." .. Pouvez-vous expliquer comment faire cela?
Anish V
3
@AnishV Par exemple, si vous utilisez Git, tapez git mv ...au lieu de mv .... Consultez la git-mvdocumentation pour plus d'informations.
cubuspl42
3
Dans le fichier .csproj, vous devez mettre à jour la propriété SolutionDir, ainsi que corriger tous les chemins pour les références de projet et les emplacements des packages nuget. Dans le fichier .sln, tout ce que vous avez à faire est de mettre à jour le chemin d'accès au projet.
Pete
Cela a fonctionné pour moi. Le seul 'truc' était que je devais changer le fichier .sln afin qu'il ne soit pas en lecture seule pour le modifier et le marquer à nouveau comme lecture seule pour des raisons de sécurité.
JustWannaFly
44
  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éfinissez le nouveau chemin
  7. Faites un clic droit sur le projet et cliquez sur recharger
Emmanuel
la source
4
Cela fonctionne extrêmement bien et semble être le moyen le plus rapide et le plus simple, malgré les autres réponses aux votes beaucoup plus élevés. Il y a un article là-dessus ici: msmvps.com/blogs/deborahk/archive/2010/06/30/…
Mike Rosenblum
@MikeRosenblum Le lien est rompu, le nouveau lien est blogs.msmvps.com/deborahk
Roi Gavish
1
Ne fonctionne pas dans VS2012. L'article lié ne mentionne également que VS2010.
bassim
A bien fonctionné pour moi dans VS2010, y compris toutes mes références sauf 1 que j'ai dû rajouter.
Kristian
@Vasanth Dans Visual Studio 2019, vous devez modifier manuellement le fichier .sln pour localiser le projet; et éventuellement (probablement) le fichier .csproj pour référencer l'emplacement correct de tout paquet nuget.
Caltor
3

Ce qui a fonctionné pour moi était de:

  1. Supprimez le projet de la solution.
  2. Modifiez le fichier de projet avec un éditeur de texte.
  3. Mettez à jour tous les chemins relatifs vers les "packages". Dans mon cas, j'ai dû changer ..\packagespour ..\..\..\packagesdepuis que j'ai déplacé le projet dans un dossier plus profond.
  4. Chargez à nouveau le projet dans la solution.
Gonzalo Méndez
la source
2

J'ai eu le même problème. J'ai résolu en bougeant les références et en moins de 15 minutes, sans changer les références.

Pour moi, la solution était simple:

  1. Déplacez vos fichiers là où vous en avez besoin.
  2. Supprimez le dossier avec le nom .vs. Doit être un dossier non visible.
  3. Ouvrez le fichier de solution (.sln) à l'aide d'un éditeur simple comme note ou notepad ++.
  4. Modifiez la référence où se trouve votre fichier, en utilisant la structure suivante: si vous placez votre projet dans le même dossier supprimez le dossier précédent ou la référence ".. \"; si vous mettez dans un dossier ci-dessus ajoutez la référence ".. \" ou le nom du dossier.
  5. Enregistrez le fichier avec les modifications.
  6. Ouvrez le fichier projet (.csproj) et faites de même, supprimez ou ajoutez la référence.
  7. Enregistrez les modifications.
  8. Ouvrez le fichier de solution.

Exemples:

Dans le fichier de solution (.sln)

  • Original: Project ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.UI", " ScannerPDF \ PATH1.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8-A5D6933E2D7B } "Project (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," ScannerPDF \ PATH1.DataService \ PATH1.DataService.csproj "," {ED5A561B-3674-4613-ADE5-B-3674-4613-ADE5-B-3674-4613-ADE5 } "

    Nouveau: Project ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.MX.UI", "PATH1.MX.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8 -A5D6933E2D7B} "Projet (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," PATH1.DataService \ PATH1.DataService.csproj "," {ED5A5461366-AD1146E-3674-E } "

Dans le fichier de projet:

  • Original:

    Nouveau:

    Référence d'origine: .... \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

    Nouvelle référence: .. \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

Victor David Francisco Enrique
la source
2

Résumé: renommer et déplacer dans VS2019 avec git, conserver l'historique de git, tirer un peu parti de R #, mise à jour automatique des références de projet dépendant (important pour les sln 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 effectuant un "git mv" (évitant la suppression de l'historique d'ajout / suppression).

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

(Utilise le conseil de base2 concernant les projets de déchargement.)

Renommer

  1. VS | Explorateur de solutions | projet clic droit | Renommer (par exemple, Utils.Foo en Foo).
  2. VS | Explorateur de solutions | projet clic droit | Propriétés | modifier le nom de l'assembly, l'espace de noms par défaut et les champs d'informations d'assemblage
  3. Faites 1 et 2 pour le projet de test correspondant (par exemple, Utils.Foo.Tests)
  4. VS | Explorateur de solutions | projets clic droit (production et test) | Refactor | Ajuster les espaces de noms
  5. Les fichiers XAML qui utilisent le projet peuvent avoir besoin d'être mis à jour (manuellement ou avec une recherche et un remplacement globaux appropriés)
  6. Tout reconstruire
  7. Commettre!! (pour valider les changements avant les déplacements)

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

Bouge toi

Cette méthode: 1) conserve l'historique de git, 2) exploite 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échargez tous les projets de la solution (afin que la suppression du projet cible ne déclenche pas de modifications dans les projets dépendants)

    VS | sélectionnez tous les dossiers de solution sous Solution | cliquez avec le bouton droit sur Décharger les projets

  2. déplacer des dossiers en utilisant git (donc l'historique est conservé)

a) Ouvrez l'invite de commande du développeur pour 2019

b) git status (pour illustrer «rien à valider, nettoyer l'arbre de travail»)

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

d) état git pour afficher / vérifier le changement

  1. supprimer le projet

VS | Explorateur de solutions | sélectionner un projet | clic droit | Supprimer (puisque tous les projets sont déchargés, cela ne supprimera PAS correctement les références à celui-ci dans les projets dépendants)

  1. rajouter le projet (au nouvel emplacement dans l'arborescence dans l'Explorateur de solutions)

a) VS | Explorateur de solutions | 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 | Modifications | double-cliquez sur un csproj dépendant répertorié | inspectez-vérifiez le changement de chemin ProjectReference)

  1. Correction manuelle des chemins dans le seul fichier * .csproj déplacé

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

Cela mettra à jour ...

a) Références GlobalAssmeblyInfo.cs

b) chemins vers les packages

c) chemins vers les fichiers de diagramme de validation de dépendance

d) chemins vers les chemins de jeu de règles (par exemple <CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>)

  1. Fermez et rouvrez la solution (pour que les références du projet soient en bon état)

Enregistrer tout, fermer la solution, je préfère supprimer les dossiers bin et obj pour être débarrassés de l'historique, rouvrir la solution

  1. Valider

a) VS | Explorateur d'équipe | Changements

i) devrait voir les changements par étapes qui révèlent les fichiers qui ont été déplacés ii) devrait voir les projets dépendants (* .csproj) qui ont été bien mis à jour, passez en revue les diffs csproj et notez que les chemins ont été magnifiquement mis à jour !! (c'est la magie qui évite de mettre à jour laborieusement manuellement les 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 des tests unitaires, lancer des applications dans sln.

  1. Commettre!!
dthal
la source
1

C'est facile dans VS2012; utilisez simplement la fonction de mappage des modifications:

  1. Créez le dossier dans lequel vous souhaitez déplacer la solution.
  2. Archivez tous vos fichiers de projet (si vous souhaitez conserver vos modifications) ou restaurez tous les fichiers extraits.
  3. Fermez la solution.
  4. Ouvrez l'explorateur de contrôle de code source.
  5. Cliquez avec le bouton droit sur la solution et sélectionnez "Avancé -> Supprimer le mappage ..."
  6. Remplacez la valeur "Dossier local" par celle que vous avez créée à l'étape 1.
  7. Sélectionnez «Modifier».
  8. Ouvrez la solution en double-cliquant dessus dans l'explorateur de contrôle de source.
Forch
la source
2
Autrement dit, si vous utilisez TFS?
Martin Ba
1

dans Visual Studio Comunity 2019, j'ai fait ce que dit Victor David Francisco Enrique, mais je n'avais besoin que de supprimer le dossier .vs invisbile

BWS1986
la source
0

Dans VS 2015

  1. Déchargez votre projet dans l'explorateur de solutions
  2. Créer une nouvelle solution
  3. Copiez les projets dans le dossier de la nouvelle solution
  4. Cliquez avec le bouton droit sur la solution, ajoutez un projet existant.
  5. Si vous utilisez un framework tel que MVC, vous devrez peut-être ajouter la référence dans le gestionnaire de références.
code4j
la source
0

J'ai compris que cet essai a fonctionné pour moi.

Dans l'édition communautaire de Visual Studio 2017, il crée un projet à ce chemin "C: \ Users \ mark \ source \ repos \ mipmaps \ mipmaps" Cela créera un problème d'accès au fichier refusé

Maintenant, vous pouvez résoudre ce problème de cette façon.

fermez votre processus de studio visuel. Ensuite, recherchez votre projet et copiez le dossier du projet Mais, commencez par créer un sous-dossier Projets nommés à l'intérieur de votre dossier Visual Studio 2017 dans les documents. Ensuite, collez le dossier de projet dans votre dossier de projet Visual Studio 2017 et non dans le dossier principal de Visual Studio 2017, il doit aller dans le sous-dossier appelé Projets. Ensuite, redémarrez Visual studio 2017 Ensuite, choisissez Ouvrir la solution de projet Ensuite, recherchez votre projet que vous avez collé dans votre dossier Projets de Visual Studio 2017 Ensuite, nettoyez le projet et reconstruisez-le, il devrait être généré et compilé très bien. J'espère que cela a aidé quelqu'un d'autre. Je ne sais pas pourquoi Microsoft a pensé construire vos projets dans un chemin où il a besoin d'autorisations d'écriture me dépasse.

marquer
la source
0

Je voulais que les modifications dans Git soient affichées sous forme de mouvements / renommage au lieu de suppression et d'ajout. J'ai donc fait un combo de ce qui précède et de ce post .

mkdir subdirectory
git mv -k ./* ./subdirectory
# check to make sure everything moved (see below)
git commit

Et ajustez les chemins des projets et des assemblys depuis les Pkg nuget dans le fichier sln via un éditeur de texte.

Bob Lokerse
la source
0
  1. Copiez le dossier du projet vers la nouvelle destination
  2. Supprimez votre projet de la solution (cliquez avec le bouton droit sur le projet dans «Explorateur de solutions» et choisissez «Supprimer»)
  3. Ensuite, ajoutez le projet existant à la solution (cliquez avec le bouton droit sur le projet dans «Explorateur de solutions» et choisissez «Ajouter» puis «Projet existant»)
  4. Changer le chemin du dossier «packages» dans le fichier «YourProjectName.csproj» (ouvrir dans le bloc-notes et modifier les chemins des packages liés)
Un autre Mi
la source
0

Cela a fonctionné pour moi vb2019. J'ai copié mon dossier de projet source. J'ai ensuite collé le projet et renommé le dossier en quelque chose. Afin de rompre les liens avec le dossier du projet source, j'ai temporairement renommé le dossier source. J'ai ouvert mon projet de destination. Les chemins d'accès aux formulaires et modules ont été redécouverts dans le dossier local. J'ai parcouru tous mes formulaires et modules pour m'assurer qu'ils fonctionnaient. J'ai dirigé le projet. J'ai fermé le projet. J'ai renommé le dossier du projet source en son nom d'origine. Je peux ouvrir les deux projets en même temps sans erreur.

Sablonneux
la source