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
- VS | Explorateur de solutions | projet clic droit | Renommer (par exemple, Utils.Foo en Foo).
- 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
- Faites 1 et 2 pour le projet de test correspondant (par exemple, Utils.Foo.Tests)
- VS | Explorateur de solutions | projets clic droit (production et test) | Refactor | Ajuster les espaces de noms
- 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)
- Tout reconstruire
- 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).
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
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
- 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)
- 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
- 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)
- 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>
)
- 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
- 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.
- Commettre!!