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
- VS | Explorateur de solutions | Clic droit sur le projet | Renommer (par exemple, Utils.Foo en Foo).
- 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.
- Faire 1 et 2 pour le projet de test correspondant (par exemple, Utils.Foo.Tests)
- VS | Explorateur de solutions | Clic droit sur les projets (production et test) | Refactor | Ajuster les espaces de noms
- 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é).
- Reconstruire tout
- 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).
-
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
-
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
- 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).
- 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
- 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)
- 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>
)
- 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.
- 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.
- Engagez-vous !
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.
1 votes
Duplicata possible de Comment renommer un dossier de projet à partir de Visual Studio ?