Podsumowanie: zmień nazwę i przenieś w VS2019 z git, zachowując historię git, nieco wykorzystując R #, automatyczna zależna aktualizacja referencji projektu (ważne dla sln z wieloma projektami, mamy> 200)
Używałem następujących kroków, aby zmienić nazwę i przenieść projekty C # w Visual Studio 2019. Ten proces używa R # do dostosowania przestrzeni nazw. Historia git jest zachowywana poprzez wykonanie „git mv” (unikanie dodawania / usuwania historii usuwania).
Dwie fazy: 1) zmień nazwę projektu na miejscu i 2) przenieś projekt.
(Wykorzystuje wskazówkę z projektów przeładunku bazy 2 ).
Przemianować
- VS | Solution Explorer | kliknij prawym przyciskiem myszy projekt | Zmień nazwę (np. Utils.Foo na Foo).
- VS | Solution Explorer | kliknij prawym przyciskiem myszy projekt | Właściwości | zmień nazwę zestawu, domyślną przestrzeń nazw i pola Informacje o złożeniu
- Wykonaj 1 i 2 dla odpowiedniego projektu testowego (np. Utils.Foo.Tests)
- VS | Solution Explorer | projekty prawym przyciskiem myszy (produkcja i test) | Refaktor | Dostosuj przestrzenie nazw
- Pliki XAML korzystające z projektu mogą wymagać aktualizacji (ręcznie lub za pomocą odpowiedniego wyszukiwania globalnego i zastąpienia)
- Odbuduj wszystko
- Popełnić!! (aby zatwierdzić zmiany przed ruchami)
Uwaga: Folder w Eksploratorze Windows pozostaje dotychczasową nazwą (np. Utils.Foo). Zostało to naprawione w krokach ruchu.
Ruszaj się
Ta metoda: 1) zachowuje historię git, 2) wykorzystuje R # do atomowego dostosowywania przestrzeni nazw oraz 3) masowo aktualizuje projekty zależne (unika żmudnej ręcznej edycji zależnych plików sln i csproj).
zwolnij wszystkie projekty z rozwiązania (aby usunięcie projektu docelowego nie spowodowało zmian w projektach zależnych)
VS | wybierz wszystkie foldery rozwiązania w obszarze Rozwiązanie | kliknij prawym przyciskiem myszy opcję Rozładuj projekty
przenosić foldery za pomocą git (dzięki czemu historia jest utrzymywana)
a) otwórz Wiersz polecenia programisty na rok 2019
b) status git (aby zilustrować „nic do popełnienia, czyste drzewo robocze”)
c) git mv projektu np. git mv "C: \ Code \ foo \ foo \ Utils.Foo" "C: \ Code \ Foo"
d) status git, aby zobaczyć / zweryfikować zmianę
- usuń projekt
VS | Solution Explorer | wybierz projekt | kliknij prawym przyciskiem | Usuń (ponieważ wszystkie projekty są rozładowane, poprawnie NIE usunie to odniesień do projektów zależnych)
- ponownie dodaj projekt (do nowej lokalizacji w drzewie w Solution Explorer)
a) VS | Solution Explorer | wybierz docelowy folder nadrzędny | kliknij prawym przyciskiem | Dodaj | Istniejący projekt
- przeładuj wszystkie projekty
WAŻNE: Potwierdź, że pliki * .csproj dla zależnych projektów zostały zaktualizowane.
(VS | Team Explorer | Zmiany | kliknij dwukrotnie dowolny zależny csproj na liście | sprawdź-sprawdź zmianę ścieżki ProjectReference)
- Ręcznie napraw ścieżki w pojedynczym przeniesionym pliku * .csproj
Użyj Notepad ++ (lub innego edytora tekstu), aby naprawić ścieżki. Często można to zrobić za pomocą prostego wyszukiwania i zamiany (np. ../../../../ do ../../).
To zaktualizuje ...
a) Referencje GlobalAssmeblyInfo.cs
b) ścieżki do pakietów
c) ścieżki do plików diagramu sprawdzania poprawności zależności
d) ścieżki do ścieżek zestawu reguł (np. <CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>
)
- Zamknij i ponownie otwórz rozwiązanie (aby uzyskać dobre referencje projektu)
Zapisz wszystko, Zamknij rozwiązanie, wolę usunąć foldery bin i obj, aby oczyścić historię, ponownie otwórz rozwiązanie
- Uprawomocnić
a) VS | Team Explorer | Zmiany
i) powinien zobaczyć zmiany etapowe, które ujawniają przeniesione pliki ii) powinien zobaczyć zależne projekty (* .csproj), które zostały ładnie zaktualizowane przejrzyj różnice w csproj i zauważ, że ścieżki zostały pięknie zaktualizowane !! (jest to magia, która unika pracochłonnej ręcznej aktualizacji plików csproj za pomocą edytora tekstu)
b) w Eksploratorze Windows sprawdź, czy stara lokalizacja jest pusta
c) Clean Solution, Rebuild Solution, Uruchom testy jednostkowe, Uruchom aplikacje w sln.
- Popełnić!!