Tout d'abord, un peu d'histoire.
Actuellement, les espaces de noms et les assemblys dans notre base de code (~ 60 assemblys, des milliers de classes) ressemblent
WidgetCompany.Department.Something
Nous avons maintenant été essaimés de telle sorte que nous vendons le logiciel qui gère une société Widget, nous aimerions donc renommer les espaces de noms et les assemblys
NewCompany.Something
Dans des circonstances normales, je resterais probablement avec l'ancien espace de noms, mais le problème est que nos clients ne veulent pas voir le nom d'un de leurs concurrents n'importe où dans l'application. Au cas où ils verraient une trace de pile, des propriétés d'assemblage, etc., cela ne devrait pas apparaître. Il ne s'agit pas de cacher nos associés ou de faire quoi que ce soit de sinistre, nous devons simplement nous assurer que les gens savent que nous sommes une entité distincte, une gestion distincte, et qu'ils n'ont pas à se soucier du partage des données, etc.
Maintenant la question. Quelle est la meilleure façon d'effectuer ce type de changement de nom global? Les éléments suivants devraient être modifiés:
using
dans l'application qui fait référence aux anciens nomsSuis-je coincé avec la stratégie trouver-remplacer-prier ou y a-t-il quelque chose de mieux?
Cliquez avec le bouton droit sur votre espace de noms actuel et sélectionnez Refactor -> Renommer et changez le nom dans la fenêtre contextuelle qui apparaît après un certain temps. Entrez votre nouveau nom et cliquez sur ok.
Si vous avez plusieurs profondeurs dans votre espace de noms, alors Visual Studio ne vous permettra pas de taper un point. Cependant, si vous copiez et collez un point, malgré un avertissement, il fera l'affaire.
ReSharper. Obtenez la version 5.1 de JetBrains gratuitement pendant 30 jours (plus que suffisamment de temps pour faire votre changement de nom). Placez le curseur sur l'espace de noms que vous souhaitez modifier et appuyez sur Ctrl-R deux fois (ReSharper Rename). Il fonctionnera avec un espace de noms de n'importe quel nombre de niveaux et convertit toute utilisation de cet espace de noms en un nouveau. Cependant, vous devrez changer chaque espace de noms unique dans votre solution (sauf si vous allez simplement avec Rechercher/Remplacer)
Tout d'abord, j'essaierais Refactor->Rename
option. Mais comme mentionné dans le commentaire pour une autre réponse, cela ne fonctionne pas si bien (ou je n'ai pas trouvé comment le faire fonctionner). Je préfère donc utiliser le scénario suivant, surtout si vous souhaitez ajouter un espace de noms supplémentaire.
1) Renommez votre espace de noms racine (WidgetCompany
) en quelque chose comme NAMESPACE_TO_BE_REPLACED
en utilisant Refactor-Rename
2) Remplacez NAMESPACE_TO_BE_REPLACED
avec votre espace de noms final (NewCompany.WidgetSoftware
) à l'aide de la boîte de dialogue de recherche et de remplacement
Et n'oubliez pas de renommer les projets, les espaces de noms par défaut, etc.
Si vous avez ReSharper:
Cliquez avec le bouton droit sur le projet, Propriétés. Remplacez l'espace de noms par défaut par l'espace de noms souhaité.
Projet de clic droit, Refactor -> Ajuster l'espace de noms pour mettre à jour tous les espaces de noms pour utiliser l'espace de noms par défaut
Ensuite, laissez-le faire sa magie.
Visual Studio 2019 Community Edition prend en charge cela comme décrit ici . Il fonctionne pour n'importe quelle hiérarchie (avec des points, des changements d'espace de noms racine, etc.) et met à jour correctement toutes les dépendances.
Solution alternative si vous avez déjà partiellement renommé:
.*
)YourSolution.YourProject
YourSolution.Your[partiallyRenamedNamespaceCharacters].*
Entire Solution
est sélectionné et non Current Document