Méthode appropriée pour renommer la solution (et les répertoires) dans Visual Studio

415

J'ai une solution Visual Studio plutôt impliquée (2010, mais cela ne devrait pas avoir d'importance) que je dois renommer.

Je veux renommer les dossiers pour qu'ils correspondent au nouveau nom de la solution, mais je n'arrive pas à trouver un moyen de refactoriser automatiquement les noms de dossier, et parcourir chaque fichier de projet sera pénible.

Existe-t-il un moyen officiel de procéder? Alternativement (et beaucoup moins de préférence), existe-t-il des outils gratuits pour accomplir cela?

David Pfeffer
la source
13
Comment est-ce un doublon? Il demande le renommage d'une solution et non d'un projet!
Viking

Réponses:

375

Modifier manuellement le fichier .sln

Cette méthode vise entièrement à renommer le répertoire du projet, tel qu'il est affiché dans l'Explorateur Windows.

Cette méthode ne souffre pas des problèmes de la méthode Supprimer / ajouter un fichier de projet ci-dessous (les références disparaissent), mais elle peut entraîner des problèmes si votre projet est sous contrôle de source (voir les notes ci-dessous). C'est pourquoi l'étape 2 (sauvegarde) est si importante.

  1. Fermez Visual Studio.
  2. Créez une sauvegarde de votre fichier .sln (vous pouvez toujours revenir en arrière).
  3. Imaginez que vous souhaitiez renommer le répertoire Project1en Project2.
  4. Si vous n'utilisez pas le contrôle de code source, renommez le dossier de Project1à l' Project2aide de l'Explorateur Windows.
  5. Si vous utilisez le contrôle de code source, renommez le dossier de Project1en Project2utilisant les fonctions fournies par le contrôle de code source. Cela préserve l'historique du fichier. Par exemple, avec TortoiseSVN, faites un clic droit sur le fichier, sélectionnez TortoiseSVN .. Rename.
  6. Dans le fichier .sln, modifiez toutes les instances de Project1be Project2, à l'aide d'un éditeur de texte comme NotePad .
  7. Redémarrez Visual Studio et tout fonctionnera comme avant, mais avec le projet dans un répertoire différent.

Vous pouvez également voir renommer la solution manuellement ou publier qui décrit ce processus manuel .

Les avantages

  • Vous pouvez faire en sorte que le répertoire dans l'Explorateur Windows corresponde au nom du projet dans la solution.
  • Cette méthode ne pas supprimer toutes les références d'autres projets dans ce fichier (un avantage sur le fichier de projet / retirons méthode, voir mon autre réponse ci - dessous).

Avertissements

  • Il est important de tout sauvegarder dans un fichier .zip avant de renommer quoi que ce soit, car cette méthode peut créer des problèmes avec le contrôle de code source.
  • Si votre projet est sous contrôle de code source, il peut créer des problèmes si vous renommez des fichiers ou des répertoires en dehors du contrôle de code source (à l'aide de l'Explorateur Windows). Il est préférable de renommer le fichier en utilisant le cadre de contrôle des sources lui - même , si vous le pouvez, pour conserver l'historique de ce fichier (consultez le menu contextuel sur un clic droit - il peut avoir une fonction pour renommer le fichier).

Mise à jour 2014-11-02

ReSharper a ajouté une méthode automatisée pour obtenir le même résultat que la méthode manuelle ci-dessus. Si l'espace de noms est souligné par une ligne bleue ondulée, cliquez sur l'icône de la pyramide d'action pour:

  • Renommez l'espace de noms pour qu'il corresponde au nom du répertoire dans l'Explorateur Windows, ou;
  • Renommez le répertoire dans l'Explorateur Windows pour qu'il corresponde à l'espace de noms.

Dans le second cas, le dernier mot définit le nouveau nom de répertoire dans l'Explorateur Windows, par exemple si nous avons changé l'espace de nom en ViewModel2, il proposerait de déplacer le fichier vers le dossier ViewModel2.

Cependant, cela ne mettra pas nécessairement à jour les fichiers dans le contrôle de code source, vous devrez donc toujours utiliser la méthode manuelle.

entrez la description de l'image ici

Mise à jour 2018-01-31

Testé avec Visual Studio 2008, 2010, 2012, 2013, 2015, 2017 Update 1, 2, 3, 4, 5.

Mise à jour 2020-05-02

Testé avec Visual Studio 2019.

Contango
la source
2
note: même avec VS2012, il est nécessaire de redémarrer car sinon cela peut devenir confus et vous obtenez des erreurs stupides
Simon_Weaver
1
"Si vous avez le contrôle des sources, vous perdrez l'historique du fichier" c'est un peu un inconvénient majeur pour nous (audit, etc.) y a-t-il des itinéraires suggérés tout en conservant l'historique?
dougajmcdonald
23
Visual Studio est un programme si puissant, mais cette fonctionnalité n'est pas incluse? wow ..
Luca Steeb
2
Même après avoir suivi la solution décrite par @Contango, j'obtenais toujours une erreur: l'attribut OwinStartup a été découvert dans l'assembly ... startup new name qui était en conflit avec l'ancien nom. J'ai parcouru les dossiers obj et bin et supprimé tout fichier avec l'ancien nom, laissant tout le reste intact. Redémarré vs avec mon projet nouvellement nommé et il a fonctionné comme un charme! Remercier!
nocturns2
2
@LucaSteeb Yup, 2012 aurait été d'environ 50 millions de lignes de code. #monolithic
Chiramisu
158

Voici les étapes à suivre pour renommer une solution:

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet, sélectionnez Renommer et entrez un nouveau nom.
  2. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet et sélectionnez Propriétés. Sous l'onglet Application, modifiez le "Nom de l'assembly" et "Espace de noms par défaut".
  3. Dans le fichier cs principal (ou tout autre fichier de code), renommez la déclaration d'espace de noms pour utiliser le nouveau nom. Pour cela, cliquez avec le bouton droit sur l'espace de noms et sélectionnez Refactor> Rename entrez un nouveau nom. Par exemple: namespace WindowsFormsApplication1
  4. Modifiez AssemblyTitle et AssemblyProduct dans Propriétés / AssemblyInfo.cs.

    [assembly: AssemblyTitle("New Name Here")]
    [assembly: AssemblyDescription("")]
    [assembly: AssemblyConfiguration("")]
    [assembly: AssemblyCompany("")]
    [assembly: AssemblyProduct("New Name Here")]
    [assembly: AssemblyCopyright("Copyright ©  2013")]
    [assembly: AssemblyTrademark("")]
    [assembly: AssemblyCulture("")]
    
  5. Supprimez physiquement les répertoires bin et obj.

  6. Renommez le répertoire du dossier physique du projet.

  7. Ouvrez le fichier SLN (dans le bloc-notes ou dans n'importe quel éditeur) et modifiez le chemin d'accès au projet.

  8. Nettoyez et reconstruisez le projet.

Zaheer Ahmed
la source
1
Cela fonctionne parfaitement! Mais vous devez gérer votre Datasetmanuellement (si vous vous êtes attaché à votre projet).
Sujith HS
2
Travaux! J'ai également dû renommer les fichiers .sln et .suo. Et j'ai trouvé que l'étape 4 avait déjà été accomplie par l'une des étapes précédentes de mon VS 2010
Correctifs
3
Je ne sais pas trop si vous faites référence à la solution ou au projet à l'étape 1. Je veux renommer les deux, chacun avec un nom différent. Quel serait le nouvel espace de noms, le nouveau nom de la solution ou le nom du projet? Merci d'avoir clarifié cela pour moi.
Alan Fisher
1
Cela a également fonctionné pour moi (en utilisant VS2013), mais il a manqué les chemins du projet dans le \Packages\repositories.configfichier.
Ted
1
Avant d'essayer de rouvrir la solution, j'ai utilisé un outil de recherche, Agent Ransack, pour rechercher dans tous les fichiers et dossiers toute référence au nom de la solution / du projet précédent et les corriger. Il y avait plusieurs endroits où je devais faire cela.
Andy G
31

Les opérations Renommer dans Visual Studio ne modifient que le nom de fichier, c'est-à-dire pour un projet, * .prj et pour une solution * .sln. Vous devrez renommer les dossiers séparément en utilisant le système de fichiers, et vous devrez supprimer et lire les projets car ils auront de nouveaux noms de dossiers. Cependant, notez que les fichiers de solution et de projet sont respectivement des fichiers texst et xml. Vous pouvez écrire votre propre programme qui les analyse et renomme les noms de dossier, les noms de fichiers et corrige les fichiers de projet / solution en interne.

AaronLS
la source
1
Existe-t-il des outils gratuits qui le font déjà? Je n'ai rien trouvé.
David Pfeffer
5
La seule chose qui pourrait vous aider est CoolCommands 4.0 "Ajouter des projets à partir du dossier", de sorte qu'après avoir supprimé / renommé les dossiers de projet, vous pouvez les ajouter tous à la fois: sharptoolbox.com/tools/coolcommands
AaronLS
1
sublime text 2 a une recherche regex et remplace les fonctionnalités qui facilitent le traitement.
jfyelle
22

Vous pouvez également exporter le modèle, puis créer un nouveau projet à partir du modèle exporté en changeant le nom à votre guise

edoardo
la source
1
Cela a également fonctionné pour moi. J'ai cependant dû faire un ajustement. J'utilisais le framework d'entité dans une application Web et il a laissé les anciens fichiers .dll sous le nom de projet d'origine, j'ai donc dû rechercher pourquoi j'obtenais un certain type d'erreur en double pour les classes de table. Une fois que j'ai supprimé ceux du projet, cela a bien fonctionné. J'espère que cela aide. Et merci, Edoardo!
Steve
2
C'est absolument la meilleure façon de le faire, reportez-vous à msdn.microsoft.com/en-us/library/… pour voir où déplacer votre modèle exporté afin de le trouver dans la boîte de dialogue "Nouveau projet".
Ares Ou
13

Vous trouverez ci-dessous une méthode pas à pas pour renommer l'intégralité de votre solution dans Visual Studio 2013

En supposant que nous modifions un projet nommé "HelloWorld.ui" en "Section1to5.ui"

  1. Accédez à l'explorateur de solutions (capture d'écran ci-dessous), faites un clic droit sur le projet que vous souhaitez renommer et sélectionnez "Renommer". Entrez le nouveau nom que vous désirez.

Capture d'écran de l'Explorateur de solutions

  1. Faites un clic droit sur le projet que vous venez de renommer et cliquez sur "Propriétés". Sous l'onglet Application, modifiez le "Nom de l'assembly" et "Espace de noms par défaut".

  2. Dans le fichier Program.cs principal (ou tout autre fichier de code que vous avez créé), renommez la déclaration d'espace de noms pour utiliser le nouveau nom. Pour cela, cliquez avec le bouton droit sur l'espace de noms et sélectionnez Refactor> Rename entrez un nouveau nom. Par exemple:

    espace de noms HelloWorld.ui ----> espace de noms Section1to5.ui

  3. Ensuite, développez les "Propriétés" et double-cliquez sur le fichier AssemblyInfo.cs. Vous remarquerez le fragment de code ci-dessous:

[assembly: AssemblyTitle("HelloWorld.ui")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("HelloWorld.ui")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Vous devez remplacer AssemblyTitle et AssemblyProduct dans Properties / AssemblyInfo.cs par le nouveau nom, dans cet exemple, de "HelloWorld.ui" à "Section1to5.ui". Une fois que vous avez terminé de modifier le nom, enregistrez et fermez Visual Studio.

  1. Dans le répertoire du projet, allez dans le dossier "HelloWorld.ui" et supprimez les répertoires "bin" et "obj".

  2. Une fois que vous avez terminé, renommez le dossier "HelloWorld.ui" en nouveau nom de projet.

  3. Ouvrez le fichier de solutions renommé avec un éditeur de texte tel que le Bloc-notes ou Notepad ++ et modifiez la ligne suivante:

    Projet ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloWorld.ui", "HelloWorld.ui \ HelloWorld.ui.csproj", "{39FC65A3-3AE7-4EC9-B8F7-74F971636C70}" "

Remplacez toutes les instances de "HelloWorld.ui" par le nouveau nom que vous avez sélectionné pour votre projet, dans ce cas "Section1to5.ui". Cela modifie le chemin d'accès du projet vers le répertoire renommé à l'étape 6.

  1. Ouvrez le fichier de solutions avec Visual Studio et nettoyez et reconstruisez le projet.

  2. Vous pouvez remarquer que le bouton "Debug / Run" a été remplacé par le bouton "Attach". Si cela se produit, faites simplement un clic droit sur le projet et choisissez l'option "Définir comme projet de démarrage". Sinon, cliquez sur Outils> Personnaliser> Commandes> Ajouter une commande> Déboguer et ajoutez le bouton.

Vous avez fini de renommer le projet, si vous avez des doutes, n'hésitez pas à poster et je serais heureux de vous aider!

Abhishek Agrawal
la source
6

Supprimez vos sous-dossiers bin et obj pour supprimer une charge de référence incorrecte, puis utilisez Windows pour rechercher l'ancien nom.

Modifiez le code ou les fichiers xml trouvés et reconstruisez, devrait être ok maintenant.

Michael
la source
4

J'ai essayé le Visual Studio Project Renamer, mais il a levé des exceptions dans les quelques cas où je l'ai essayé.

J'ai eu un bon succès avec CopyWiz .

Je ne suis en aucun cas affilié à eux, et je ne l'ai pas encore payé, mais je devrai peut-être bientôt, car c'est le seul outil qui semble fonctionner à la fois pour mes projets C # et C ++. J'espère qu'ils gagnent un peu d'argent et continuent de l'améliorer.

Cameron
la source
4

Supprimer / ajouter une méthode de fichier de projet

Cette méthode vise entièrement à renommer le répertoire du projet, tel qu'il est affiché dans l'Explorateur Windows.

  1. Sauvegardez l'intégralité de votre projet en utilisant quelque chose comme GIT, SVN ou WinZip (important!).
  2. Dans la solution dans Visual Studio, supprimez le projet.
  3. Renommez le répertoire dans l'Explorateur Windows.
  4. Ajoutez à nouveau le projet dans Visual Studio.

Les avantages

  • Vous pouvez faire en sorte que le répertoire dans l'Explorateur Windows corresponde au nom du projet dans la solution.

Désavantages

  • Si vous supprimez une bibliothèque, elle supprime toutes les références à cette bibliothèque d'autres projets. La solution peut ne pas compiler après cela, jusqu'à ce que vous ajoutiez les références à ladite bibliothèque (c'est assez facile). C'est la raison pour laquelle l'étape 1 (sauvegarde) est si importante.
  • Si vous disposez du contrôle de code source, vous perdrez l'historique du fichier.

Un clic droit sur un projet et en sélectionnant "Ouvrir le dossier dans l'Explorateur Windows" est utile pour garder une trace de l'endroit où le projet est stocké pendant que vous effectuez ce processus.

Contango
la source
4
WinZip ??? J'espère bien que vous utilisez un contrôle de source réel et ne faites pas de sauvegardes de fichiers zip de votre code. Si vous, ou toute autre personne lisant ceci, êtes, alors s'il vous plaît consultez try.github.io et essayez -le sur un projet de test. Vous ne reviendrez pas!
Matt Klein
2
J'ai lu votre commentaire Monsieur @MattKlein et vous aviez raison: D Merci!
Jeancarlo Fontalvo
@Matt Klein Totalement d'accord, mis à jour pour recommander également GIT ou SVN.
Contango
3

Vous pouvez:

  1. cliquez sur fichier-> nouveau -> créer un projet à partir d'un projet existant

  2. sélectionnez votre fichier d'origine, par exemple. solution 1 et entrez le nouveau nom de fichier solution 2

  3. changer le nom du projet dans la nouvelle solution 2

李 全 全
la source
J'aime bien cette approche est-elle rejetée pour une raison particulière?
Coops
verrouillé ma machine près de la fin - sur Visual Studio 2017
klewis
3

Si vous avez des problèmes avec le chargement de projets partagés, comme Xamarin, n'oubliez pas de modifier la référence aux bibliothèques partagées dans les fichiers csproj. J'ai développé un jeu CocosSharp et les projets Droid / iOS / WP81 ne voulaient pas se charger. J'ai dû changer la ligne ci-dessous dans chaque fichier csproj (Driod / iOS / WP81) qui faisait référence à la bibliothèque partagée. Cela est dû à la modification des noms de dossier. Remplacez donc YOUR_PREVIOUS_NAMESPACE par vos nouveaux noms de dossiers.

<Import Project="..\YOUR_PREVIOUS_NAMESPACE.Shared\EmptyProject.Shared.projitems" Label="Shared" />

J'ai également remarqué que pour les projets .Driod, le nom de l'assembly dans les propriétés du projet ne peut pas être modifié à l'aide de Visual Studio (j'utilise 2015). J'ai dû changer manuellement le nom de l'assembly dans le fichier .Droid.csproj.

<AssemblyName>YourNameSpace</AssemblyName>

Ensuite, j'ai chargé la solution et dans les propriétés du projet, un nouveau nom est apparu. Après la reconstruction, la DLL avec ce nom a été générée.

Zenon
la source
2

Si vous créez un site Web dans Visual Studio 2010. Vous pouvez modifier le nom du projet comme suit.

Étape 1: dans Visual Studio 2010, le fichier SLN sera stocké dans le dossier du projet dans Visual studio 2010 et les fichiers source sont stockés dans le dossier du site Web dans Visual Studio 2010.

Étape 2: Renommez le dossier par un clic droit sur ce dossier vers l'avant par Renommer qui contient votre projet SLN.

Étape 3: Renommez le nom du fichier SLN par un clic droit sur ce fichier SLN vers l'avant par Renommer.

Étape 4: renommer le dossier qui contient la source de ce fichier SLN sous Site Web dans Visual Studio 2010.

Étape 5: Enfin, double-cliquez sur votre fichier SLN et changez la racine de votre dossier source SLN.

Pavi Thran
la source
2

La seule solution qui fonctionne pour moi sur Visual Studio 2013 dans un projet WEB:

Disons que je veux renommer "project1" en "project2". Disons que le chemin physique vers mon fichier .sln est: c: \ mon \ chemin \ projet1 \ projet1.sln

donc le chemin d'accès à mon fichier .csproj ainsi que le dossier bin et les dossiers obj doivent être: c: \ my \ path \ project1 \ project1 \

  1. Ouvrez la solution dans VS en double-cliquant sur le fichier project1.sln.

  2. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet (PAS la solution !!!), sélectionnez Renommer et entrez un nouveau nom.

  3. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet et sélectionnez Propriétés. Sous l'onglet Application, modifiez le "Nom de l'assembly" et "Espace de noms par défaut".

  4. Dans le fichier CS principal (ou tout autre fichier de code comme Global.asax par exemple), renommez la déclaration d'espace de noms pour utiliser le nouveau nom. Pour cela, cliquez avec le bouton droit sur l'espace de noms et sélectionnez Refactor> Rename entrez un nouveau nom. Par exemple:

espace de noms project1

4.1 Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet (PAS la solution !!!), sélectionnez Renommer et entrez un nouveau nom.

  1. Assurez-vous que AssemblyTitle et AssemblyProduct dans Properties / AssemblyInfo.cs sont définis sur le nouveau nom ("project2").

1 [assembly: AssemblyTitle ("New Name Here")] 2 [assembly: AssemblyDescription ("")] 3 [assembly: AssemblyConfiguration ("")] 4 [assembly: AssemblyCompany ("")] 5 [assembly: AssemblyProduct (" Nouveau nom ici ")] 6 [assembly: AssemblyCopyright (" Copyright © 2013 ")] 7 [assembly: AssemblyTrademark (" ")] 8 [assembly: AssemblyCulture (" ")]

  1. Fermez Visual Studio.

  2. Supprimez physiquement les répertoires bin et obj.

  3. Renommez le dossier parent et le dossier source avec le nouveau nom (project2):

Dans l'exemple: c: \ my \ path \ project1 \ project1

sera: c: \ mon \ chemin \ projet2 \ projet2

  1. Renommez le nom du fichier SLN par un clic droit sur ce fichier SLN vers l'avant par Renommer.

  2. Ensuite, ouvrez enfin le fichier SLN (dans le bloc-notes ou dans n'importe quel éditeur) et copiez et remplacez (Ctrl + h) tout ancien nom par le nouveau nom.

  3. Ouvrez VS et cliquez sur BUILD -> Clean Solution

  4. cliquez sur Build -> Build solution puis sur F5 pour exécuter ...

  5. Note1: Si vous obtenez quelque chose comme ceci: Erreur de compilation CS0246: Le type ou le nom d'espace de nom 'project2' est introuvable (manque-t-il une directive using ou une référence d'assembly?)

Fichier source: c: \ Users \ Username \ AppData \ Local \ Temp \ Temporary ASP.NET Files \ root \ 78dd917f \ d0836ce4 \ App_Web_index.cshtml.a8d08dba.b0mwjmih.0.cs

Accédez ensuite au dossier "Fichiers ASP.NET temporaires" et supprimez tout.

  1. Remarque 2: Si vous essayez de faire "enregistrer sous" dans un nouveau projet nommé et de conserver également l'ancien, envisagez de dupliquer votre base de données en modifiant les chaînes de connexion dans web.config et également en relançant les migrations si vous en avez une dans le projet.
Dudi
la source
2

Je suis nouveau sur VS. Je viens d'avoir ce même problème: besoin de renommer un projet démarré après quelques semaines de travail. C'est ce que j'ai fait et cela a fonctionné.

  1. Juste au cas où, faites une sauvegarde de votre dossier Project, bien que vous ne le touchiez pas, mais juste au cas où!
  2. Créez un nouveau projet et enregistrez-le en utilisant le nom que vous souhaitez pour votre «nouveau» projet, c'est-à-dire le nom que vous souhaitez modifier votre «ancien» projet.
  3. Construit le. Après cela, vous aurez un projet avec le nom que vous vouliez mais qui ne fait rien du tout, mais ouvrir une fenêtre (une application Windows Form dans mon cas).
  4. Avec le nouveau projet ouvert, cliquez sur Project-> Add Existing Ítem et à l'aide de l'Explorateur Windows localisez votre 'ancien' dossier Project et sélectionnez tous les fichiers sous ... Visual Studio xxx \ Projects \ oldApp \ oldApp
  5. Sélectionnez tous les fichiers qui s'y trouvent (.vb, .resx) et ajoutez-les à votre «nouveau» projet (celui qui devrait déjà être ouvert).
  6. Presque la dernière étape serait d'ouvrir votre fichier de projet à l'aide de l'
    Explorateur de solutions et dans le 1er onglet, changez le formulaire de démarrage par défaut pour le formulaire qu'il devrait être.
  7. Reconstruisez tout.

Peut-être plus d'étapes mais moins ou pas de frappe du tout, juste quelques clics de souris. J'espère que cela aide :)

J. Davalos
la source