comment changer l'espace de noms du projet entier?

104

Je modifie l'application de démonstration à partir de cet article: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

J'ai besoin de mettre à jour tous les fichiers pour utiliser mon espace de noms, par exemple maintenant le fichier situé ici:

MySolution\MyApp\DemoApp\ViewModel\MainWindowViewModel.cs

utilise un tel espace de noms:

namespace DemoApp.ViewModel
{
/// <summary>
/// The ViewModel for the application's main window.
/// </summary>
public class MainWindowViewModel : WorkspaceViewModel

Je dois déplacer le fichier ici (supprimer le dossier DemoApp):

MySolution\MyApp\ViewModel\MainWindowViewModel.cs

et aussi pour utiliser le bon espace de noms:

namespace MyApp.ViewModel
{
....

comment faire cela dans Visual Studio 2010?

Mettre à jour ok ici est possible en double Modifier l'espace de noms du projet dans Visual Studio Maintenant, je sais comment modifier l'espace de noms du projet, mais comment déplacer des fichiers sur le système de fichiers? (se débarrasser du dossier "DemoApp")

javapowered
la source
4
Tout comme un FYI, vous n'avez pas nécessairement besoin des espaces de noms pour correspondre à la structure de dossiers dans .NET, ce n'est pas obligatoire.
James Michael Hare
1
Comme James l'a dit, ce n'est pas obligatoire ... mais je me demande pourquoi quelqu'un n'a pas "fini le travail" sur une application sur laquelle je devais travailler.
NotMe
1
En ce qui concerne le déplacement de fichiers .. Euh, couper / coller et glisser / déposer fonctionne généralement dans le gestionnaire de solution de Visual Studio .. ou même simplement renommer le dossier ou supprimer. en fonction de ce que vous essayez vraiment de faire.
NotMe

Réponses:

124

J'imagine qu'un simple Replace in Files ( Ctrl+ Shift+ H) fera à peu près l'affaire; remplacez simplement namespace DemoApppar namespace MyApp. Après cela, créez la solution et recherchez les erreurs de compilation pour les identificateurs inconnus. Tout ce qui est pleinement qualifié DemoAppdevra être remplacé par MyApp.

Adam Maras
la source
62
Important; changez également l'espace de noms par défaut dans les propriétés du projet; cela contrôle l'espace de noms pour des choses comme resx
Marc Gravell
J'ai quelques fichiers XAML qui représentent des fenêtres WPF, donc cela ne fonctionnera pas pour moi.
Pieter
6
Vous devez également exécuter un remplacement sur toutes les usinginstructions pour passer de using DemoAppà using Myapp.
swbandit
5
renommer également <add namespace = "OldNameSpace" /> dans tous les fichiers web.config du dossier views
neo112
@Pieter Vous devriez pouvoir tout remplacer pour l'ensemble de l'application, suivi d'une mise à jour des propriétés comme le suggère Marc, puis fermez la solution et rouvrez-la sinon VS a un comportement inexplicable avec une certaine complétion automatique.
Eric
153

Allez à un endroit où l'espace de noms est déclaré dans l'un de vos fichiers. Placez le curseur sur la partie de l'espace de noms à modifier et appuyez sur F2. Cela devrait renommer l'espace de noms dans chaque fichier. Au moins, cela a fonctionné dans mon petit projet de démonstration que j'ai créé pour tester cette réponse!

Selon votre version de VS, le raccourci peut également être Ctrl- R, Ctrl- R.

Amy
la source
1
par une raison quelconque ne fonctionne pas pour moi. J'appuie sur F2 et rien ne se passe.
javapowered le
6
@javapowered, votre raccourci clavier a été personnalisé. Regardez dans les options VS pour le vôtre. Aujourd'hui, le mien est CTRL-R CTRL-R.
Amy
4
Remarque: Bien que je préfère toujours cette méthode, elle n'a [naturellement] pas réussi à remplacer les références dans les vues et dans le fichier web.config contenu dans le répertoire Views /. Surveillez simplement ceux-ci.
Wiseguy
3
Pour une version qui ne devrait pas dépendre des modifications des touches de raccourci, cliquez avec le bouton droit sur le nom de l'espace de noms et choisissez renommer.
Kat
3
Malheureusement, cela ne fonctionne pas si vous souhaitez que le nouveau nom inclue un .caractère.
Botond Balázs
27

Faites un clic droit sur la solution, allez dans les propriétés, changez "espace de noms par défaut" dans la section "Application".

entrez la description de l'image ici

Anuja Lamahewa
la source
3
Modifie-t-il l'espace de noms dans les fichiers existants?
Priyesh Kumar
5
Non, ce ne sera pas le cas.
Anuja Lamahewa
3

Ctrl+ Shift+ Hpas la vraie solution.

Vous pouvez utiliser Resharper pour modifier toutes vos définitions d'espace de noms dans votre solution. C'est la meilleure façon que j'ai essayée auparavant.

https://www.jetbrains.com/resharper/features/code_refactoring.html

Selçuk Ermaya
la source
2
le réaffûtage nécessite une machine de bureau coûteuse à part entière
Ivan G.
@IvanG. Eh bien, de nombreux projets commerciaux nécessitent également des développeurs coûteux à part entière, donc une machine et une licence R # ne sont pas trop coûteuses dans le plus grand schéma des choses;) Si vous devez vérifier que cette méthode (ou celle d'Adam ou d'Amy) a fonctionné correctement , vous pouvez consulter Rechercher des problèmes de code
StuartLC
1
@StuartLC, malheureusement, l'époque d'un lieu de travail dédié et d'un grand ordinateur de bureau est révolue, j'utilise un ordinateur portable vraiment puissant pour mon développement, et le réaffutage le tue pratiquement, donc je me demande de ne pas le recommander à quiconque apprécie le temps.
Ivan G.
Les gars que vous pouvez simplement utiliser pour renommer gratuitement vous le savez :-) Installez-le, activez la version d'essai gratuite, renommez-le et désinstallez-le si vous le souhaitez ;-)
Selçuk Ermaya
1

J'ai parcouru la structure des dossiers avec un outil appelé BareGrep pour m'assurer d'avoir tous les changements d'espace de noms. C'est un outil gratuit qui vous permettra de rechercher sur les fichiers dans une structure de fichiers spécifiée.

Michael Murphy
la source
file match REGEX: (.exe) | (.dll) | (.cache) | (.pdb) puis inversez la correspondance . répétez ce modèle pour exclure d'autres binaires et cetera.
twobob
1

Vous pouvez utiliser ReSharper pour la refactorisation de l'espace de noms. Il donnera 30 jours d'essai gratuit. Cela changera le nom selon la structure des dossiers.

Pas:

1) Faites un clic droit sur le projet / dossier / fichiers que vous souhaitez refactoriser.

2) Si vous avez installé ReSharper alors vous obtiendrez une option Refactor-> Adjust Namespaces .... Alors cliquez dessus.

entrez la description de l'image ici

Cela changera automatiquement les espaces de nom de tous les fichiers sélectionnés.

chindirala sampath kumar
la source
Merci ... j'ai pu le faire.
sgowd
0

J'ai tout essayé mais j'ai trouvé une solution qui fonctionne vraiment. Il crée une solution indépendante avec un nouveau nom d'espace de noms et ainsi de suite.

  1. Dans la forme principale, recherchez le nom de l'espace de noms -> clic droit -> Refactoriser -> Renommer et sélectionnez un nouveau nom. Cochez toutes les cases et cliquez sur OK.

  2. Dans l'explorateur de solutions, renommez le nom de la solution en un nouveau nom.

  3. Dans l'explorateur de solutions, renommez le nom du projet en un nouveau nom.

  4. Fermez VS et renommez le dossier (dans Total Commander par exemple) dans le dossier solution en un nouveau nom.

  5. Dans le fichier .sln, renommez l'ancien nom en un nouveau nom.

  6. Supprimer les anciens fichiers .suo (masqués)

  7. Démarrez VS et chargez le projet

  8. Projet -> propriétés -> changez le nom de l'assembly et l'espace de noms par défaut en un nouveau nom.

Maros
la source
0

Je sais qu'il est assez tard, mais pour quiconque cherche à le faire à partir de maintenant, j'espère que cette réponse se révélera utile. Si vous avez installé CodeRush Express( une version gratuite et un "must have"), il offre un moyen simple de modifier l'espace de noms d'un projet. Vous placez simplement votre curseur sur l'espace de nom que vous souhaitez modifier et il affichera une smart tag(petite boîte bleue) sous la namespacechaîne. Vous pouvez cliquer sur cette case ou appuyer sur les Ctrl +touches pour voir l' Renameoption. Sélectionnez-le, puis tapez le nouveau nom de l'espace de noms à l'échelle du projet, cliquez sur Applyet sélectionnez les endroits de votre projet que vous souhaitez qu'il change, dans la nouvelle boîte de dialogue et OKcela. Terminé! :-)

Kunal
la source
D'après mon expérience, CodeRush Express n'est pas un «must have» (opinion personnelle). C'est pratique pour de telles choses.
Maarten
0

Quand je voulais changer l'espace de noms et le nom de la solution, j'ai fait comme suit:
1) j'ai changé l'espace de noms en le sélectionnant et en le renommant et j'ai fait de même avec le nom de la solution
2) j'ai cliqué sur l'ampoule et renommé toutes les instances de l'ancien espace de noms
3 ) a supprimé tous les projets de la solution
4) fermé le studio visuel
5) renommé tous les projets dans l'explorateur Windows
6) ouvert le studio visuel et ajouté à nouveau tous les projets
7) renommer les espaces de noms dans tous les projets dans leurs propriétés
8) supprimer le dossier bin ( de tous les projets)
9) reconstruire le projet

Cela a fonctionné pour moi sans aucun problème et mon projet avait également un contrôle de source. Tout allait bien après avoir poussé ces modifications sur la télécommande.

przemas
la source