Riepilogo: rinominare e spostare in VS2019 con git, mantenendo la cronologia di git, sfruttando un po 'R #, aggiornamento automatico di riferimento del progetto dipendente (importante per sln con molti progetti, abbiamo> 200)
Ho usato i seguenti passaggi per rinominare e spostare i progetti C # in Visual Studio 2019. Questo processo utilizza R # per regolare gli spazi dei nomi. La cronologia di git viene mantenuta facendo un "git mv" (evitando la caduta della cronologia di aggiunta / cancellazione).
Due fasi: 1) rinominare il progetto in atto e 2) spostare il progetto.
(Utilizza il suggerimento dei progetti di scarico di base2 .)
Rinominare
- VS | Esplora soluzioni | progetto tasto destro del mouse | Rinomina (ad es. Utils.Foo to Foo).
- VS | Esplora soluzioni | progetto tasto destro del mouse | Proprietà | modifica del nome dell'assieme, dello spazio dei nomi predefinito e dei campi Informazioni sull'assieme
- Esegui 1 e 2 per il progetto di test corrispondente (ad es. Utils.Foo.Test)
- VS | Esplora soluzioni | progetti con il tasto destro del mouse (produzione e test) | Rifattore | Regola gli spazi dei nomi
- Potrebbe essere necessario aggiornare i file XAML che utilizzano il progetto (manualmente o con un'adeguata ricerca globale e sostituzione)
- Ricostruisci tutto
- Commettere!! (per eseguire il commit delle modifiche prima delle mosse)
Nota: la cartella in Esplora risorse rimane il vecchio nome a questo punto (ad es. Utils.Foo). Questo è stato risolto nei passaggi di spostamento.
Mossa
Questo metodo: 1) mantiene la cronologia di git, 2) sfrutta R # per regolare gli spazi dei nomi in modo atomico e 3) aggiorna i progetti dipendenti in massa (evita noiose modifiche manuali dei file sln e csproj dipendenti).
scarica tutti i progetti nella soluzione (in modo che la rimozione del progetto di destinazione non attivi cambiamenti nei progetti dipendenti)
VS | selezionare tutte le cartelle della soluzione in Soluzione | tasto destro del mouse Scarica progetti
sposta le cartelle usando git (quindi la cronologia viene mantenuta)
a) apri il Prompt dei comandi per gli sviluppatori per il 2019
b) stato git (per illustrare "niente da impegnare, lavorare l'albero pulito")
c) git mv il progetto, ad esempio git mv "C: \ Code \ foo \ foo \ Utils.Foo" "C: \ Code \ Foo"
d) git status per visualizzare / verificare le modifiche
- rimuovere il progetto
VS | Esplora soluzioni | seleziona progetto | tasto destro del mouse | Rimuovi (poiché tutti i progetti sono scaricati, questo NON rimuoverà correttamente i riferimenti ad esso nei progetti dipendenti)
- aggiungere nuovamente il progetto (nella nuova posizione nella struttura in Esplora soluzioni)
a) VS | Esplora soluzioni | seleziona la cartella principale di destinazione | tasto destro del mouse | Aggiungi | Progetto esistente
- ricaricare tutti i progetti
IMPORTANTE: confermare che i file * .csproj per i progetti dipendenti siano stati aggiornati.
(VS | Team Explorer | Modifiche | fai doppio clic su qualsiasi csproj dipendente elencato | inspect-verifica modifica del percorso di ProjectReference)
- Correggi manualmente i percorsi nel singolo file * .csproj spostato
Utilizzare Notepad ++ (o un altro editor di testo) per correggere i percorsi. Spesso questo può essere fatto con una semplice ricerca e sostituzione (ad es. Da ../../../../ a ../../).
Questo aggiornerà ...
a) Riferimenti GlobalAssmeblyInfo.cs
b) percorsi per i pacchetti
c) percorsi dei file del diagramma di convalida delle dipendenze
d) percorsi verso percorsi di regole (ad es. <CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>
)
- Chiudi e riapri la soluzione (per ottenere una buona forma dei riferimenti al progetto)
Salva tutto, Chiudi soluzione, preferisco eliminare le cartelle bin e obj per evitare la cronologia, Riapri la soluzione
- Convalidare
a) VS | Team Explorer | I cambiamenti
i) dovrebbe vedere le modifiche temporanee che rivelano i file che sono stati spostati ii) dovrebbe vedere i progetti dipendenti (* .csproj) che sono stati ben aggiornati rivedere le differenze csproj e notare che i percorsi sono stati magnificamente aggiornati !! (questa è la magia che evita faticosamente l'aggiornamento manuale dei file csproj usando un editor di testo)
b) in Esplora risorse, verificare che la posizione precedente sia vuota
c) Clean Solution, Rebuild Solution, Esegui unit test, Avvia app in sln.
- Commettere!!