Visual Studio przenieś projekt do innego folderu


182

Jak przenieść projekt do innego folderu w programie Visual Studio? Przyzwyczaiłem się do tej struktury w moich projektach.

-- app
---- Project.Something
---- Project.SomethingElse

Chcę zmienić nazwę całej przestrzeni nazw SomethingElse na SomethingNew, jaki jest najlepszy sposób, aby to zrobić (bez ręcznego przechodzenia do pliku .sln)?


Czy używasz TFS jako dostawcy kontroli źródła?
Bermo

Czy chcesz zmienić nazwę tylko folderu lub całego projektu?
Charles Gargent,

Projekt, folder i przestrzenie nazw.
Egor Pavlikhin

Odpowiedzi:


175

Usuń projekt ze swojego rozwiązania, klikając go prawym przyciskiem myszy w oknie Eksploratora rozwiązań i wybierając polecenie Usuń. Przenieś cały folder projektu, w tym podkatalogi, gdziekolwiek chcesz. Dodaj projekt z powrotem do swojego rozwiązania.

Nazwy przestrzeni nazw to coś zupełnie innego, po prostu edytuj kod źródłowy.


6
Tak właśnie zrobiłem, ale pomyślałem, że można to wszystko zrobić bez usuwania całego projektu, co powoduje, że dodam wszystkie zależności.
Egor Pavlikhin

31
Usuń wszystkie zależne projekty z rozwiązania, zanim usuniesz projekt, który chcesz przenieść. W ten sposób nie wykrywają usunięcia, a referencje projektu pozostają nienaruszone. Po przeniesieniu projektu i ponownym dodaniu go do rozwiązania można ponownie załadować zależne projekty.
base2

13
Nie zapominaj, że usunięcie pliku w TFS, a następnie ponowne zaimportowanie go z powrotem do TFS w innym położeniu katalogu lub projekcie powoduje, że historia zmian plików jest usuwana.
Paul,

chcę to zrobić, nie tracąc historii zmian, więc nadal mogę dokonywać porównań, kiedy chcę.
user734028

196

Próbowałem zasugerować usunięcie i ponowne dodanie projektu, ale późniejsze ustalenie zależności może być uciążliwe.

Używam tego podejścia:

  1. Przenieś folder projektu.
    • Jeśli projekt jest pod kontrolą źródła, wykonaj ruch za pomocą poleceń kontroli źródła.
  2. Edytuj plik rozwiązania w edytorze tekstu. Powinna być tylko jedna ścieżka, którą musisz zmienić.

Zdecydowanie łatwiej! Ale po przeniesieniu i edycji rozwiązania za pomocą edycji tekstu plik rozwiązania pokazuje się poniżej jak zwykły plik tekstowy. Jak się tego pozbyć?
Abriel

2
„Jeśli projekt jest pod kontrolą źródła, wykonaj ruch za pomocą poleceń kontroli źródła”. .. Czy możesz wyjaśnić, jak to zrobić?
Anish V

3
@AnishV Na przykład, jeśli używasz Git, wpisz git mv ...zamiast mv .... Zobacz git-mvdokumentację aby uzyskać więcej informacji.
cubuspl42

3
W pliku .csproj należy zaktualizować właściwość SolutionDir, a także naprawić wszystkie ścieżki do odniesień do projektów i lokalizacji pakietów nuget. W pliku .sln wystarczy zaktualizować ścieżkę do projektu.
Pete,

To zadziałało dla mnie. Jedyną „sztuczką” było to, że musiałem zmienić plik .sln, aby nie było go tylko do edycji, a następnie ponownie oznaczyć jako tylko do odczytu ze względów bezpieczeństwa.
JustWannaFly

44
  1. Zamknij swoje rozwiązanie w VS2012
  2. Przenieś swój projekt do nowej lokalizacji
  3. Otwórz swoje rozwiązanie
  4. Wybierz projekt, którego nie udało się załadować
  5. W oknie narzędzia Właściwości znajduje się edytowalny wpis „Ścieżka pliku”, który pozwala wybrać lokalizację nowego projektu
  6. Ustaw nową ścieżkę
  7. Kliknij projekt prawym przyciskiem myszy i kliknij polecenie Załaduj ponownie

4
Działa to bardzo dobrze i wydaje się, że jest to najszybszy i najłatwiejszy sposób, pomimo innych znacznie wyżej głosowanych odpowiedzi pomimo. Artykuł na ten temat znajduje się tutaj: msmvps.com/blogs/deborahk/archive/2010/06/30/…
Mike Rosenblum

@MikeRosenblum Link jest zepsuty, nowy link to blogs.msmvps.com/deborahk/…
Roi Gavish

1
Nie działa w VS2012. Powiązany artykuł wspomina także tylko o VS2010.
bassim

Działa dla mnie dobrze w VS2010, włączając wszystkie moje referencje oprócz 1, które musiałem ponownie dodać.
Kristian

@Vasanth W programie Visual Studio 2019 musisz ręcznie edytować plik .sln, aby zlokalizować projekt; i ewentualnie (prawdopodobnie) także plik .csproj, aby odwoływać się do poprawnej lokalizacji dowolnych pakietów nuget.
Caltor

3

Dla mnie zadziałało:

  1. Usuń projekt z rozwiązania.
  2. Edytuj plik projektu za pomocą edytora tekstu.
  3. Zaktualizuj wszystkie ścieżki względne do „pakietów”. W moim przypadku musiałem zmienić ..\packagessię ..\..\..\packagesodkąd przeniósł projektu do głębszego folderu.
  4. Załaduj projekt z powrotem do rozwiązania.

2

Miałem ten sam problem. Rozwiązałem z przeniesieniem referencji i w mniej niż 15 minut, bez zmiany referencji.

Dla mnie rozwiązanie było proste:

  1. Przenieś swoje pliki tam, gdzie potrzebujesz.
  2. Usuń folder o nazwie .vs. Musi być jak niewidoczny folder.
  3. Otwórz plik rozwiązania (.sln) za pomocą prostego edytora, takiego jak note lub notepad ++.
  4. Zmień odniesienie w miejscu, w którym znajduje się plik, korzystając z następującej struktury: jeśli umieścisz projekt w tym samym folderze, usuń poprzedni folder lub odwołanie „.. \”; jeśli umieścisz w powyższym folderze, dodaj odniesienie „.. \” lub nazwę folderu.
  5. Zapisz plik ze zmianami.
  6. Otwórz plik projektu (.csproj) i zrób to samo, usuń lub dodaj odwołanie.
  7. Zapisz zmiany.
  8. Otwórz plik rozwiązania.

Przykłady:

W pliku rozwiązania (.sln)

  • Oryginał: Projekt („{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}”) = „PATH1.UI”, „ ScannerPDF \ PATH1.UI \ PATH1.UI.csproj”, „{A26438AD-E428-4AE4-8AB8-A5D6933E } „Project („ {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ”) =„ PATH1.DataService ”,„ ScannerPDF \ PATH1.DataService \ PATH1.DataService.csproj ”,„ {ED5A561B-36E464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646)). } ”

    Nowość: Project („{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}”) = „PATH1.MX.UI”, „PATH1.MX.UI \ PATH1.UI.csproj”, „{A26438AD-E428-4AE4-8AB8 -A5D6933E2D7B} „Projekt (” {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ”) =„ PATH1.DataService ”,„ PATH1.DataService \ PATH1.DataService.csproj ”,„ {ED574561-E } ”

W pliku projektu:

  • Oryginalny:

    Nowy:

    Oryginalne odniesienie: .... \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

    Nowe odniesienie: .. \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll


2

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ć

  1. VS | Solution Explorer | kliknij prawym przyciskiem myszy projekt | Zmień nazwę (np. Utils.Foo na Foo).
  2. 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
  3. Wykonaj 1 i 2 dla odpowiedniego projektu testowego (np. Utils.Foo.Tests)
  4. VS | Solution Explorer | projekty prawym przyciskiem myszy (produkcja i test) | Refaktor | Dostosuj przestrzenie nazw
  5. Pliki XAML korzystające z projektu mogą wymagać aktualizacji (ręcznie lub za pomocą odpowiedniego wyszukiwania globalnego i zastąpienia)
  6. Odbuduj wszystko
  7. 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).

  1. 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

  2. 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ę

  1. 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)

  1. 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

  1. 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)

  1. 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>)

  1. 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

  1. 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.

  1. Popełnić!!

1

W VS2012 jest to łatwe; wystarczy użyć funkcji mapowania zmian:

  1. Utwórz folder, w którym chcesz przenieść rozwiązanie.
  2. Odpraw wszystkie pliki projektu (jeśli chcesz zachować zmiany) lub wycofaj wypisane pliki.
  3. Zamknij rozwiązanie.
  4. Otwórz Eksploratora kontroli źródła.
  5. Kliknij rozwiązanie prawym przyciskiem myszy i wybierz „Zaawansowane -> Usuń mapowanie ...”
  6. Zmień wartość „Folder lokalny” na wartość utworzoną w kroku 1.
  7. Wybierz „Zmień”.
  8. Otwórz rozwiązanie, klikając dwukrotnie w eksploratorze kontroli źródła.

2
To znaczy, czy używasz TFS?
Martin Ba

1

w Visual Studio Comunity 2019 zrobiłem to, co powiedział Victor David Francisco Enrique, ale potrzebowałem tylko usunąć folder .vs niewidoczny


0

W VS 2015

  1. Zwolnij swój projekt w eksploratorze rozwiązań
  2. Utwórz nowe rozwiązanie
  3. Skopiuj projekty do folderu nowego rozwiązania
  4. Kliknij rozwiązanie prawym przyciskiem myszy, dodaj istniejący projekt.
  5. Jeśli używasz niektórych ram, takich jak MVC, może być konieczne dodanie odwołania w menedżerze odniesień.

0

Doszedłem do wniosku, że to zadziałało dla mnie.

W społecznościowej wersji Visual Studio 2017 tworzy projekt pod tą ścieżką „C: \ Users \ mark \ source \ repos \ mipmaps \ mipmaps”. Spowoduje to utworzenie dostępu do pliku.

Teraz możesz to naprawić w ten sposób.

zamknij proces swojego studia wizualnego. Następnie znajdź swój projekt i skopiuj folder projektu. Najpierw utwórz podfolder Nazwane projekty w folderze Visual Studio 2017 w dokumentach. Następnie wklej folder projektu do folderu Visual Studio 2017 Project, a nie do głównego folderu Visual Studio 2017, który powinien przejść do podfolderu o nazwie Projekty. Następnie ponownie uruchom Visual Studio 2017 Następnie wybierz Otwórz projekt Rozwiązanie Następnie znajdź projekt wklejony w folderze Projekty Visual Studio 2017 Następnie wyczyść Projekt i przebuduj go, Powinien dobrze skompilować i skompilować. Mam nadzieję, że pomogło to każdemu innemu. Nie jestem pewien, dlaczego Microsoft pomyślał, że budowanie projektów na ścieżce wymagającej uprawnień do zapisu jest poza mną.


0

Chciałem, aby zmiany w Git były wyświetlane jako ruchy / zmiany nazw zamiast usuwania i dodawania. Zrobiłem więc kombinację powyższego i tego postu .

mkdir subdirectory
git mv -k ./* ./subdirectory
# check to make sure everything moved (see below)
git commit

I dostosuj ścieżki projektów i zestawów z pakietu Nuget Pkg w pliku SLN za pomocą edytora tekstu.


0
  1. Skopiuj folder projektu do nowego miejsca docelowego
  2. Usuń projekt z rozwiązania (kliknij prawym przyciskiem myszy projekt w „Eksploratorze rozwiązań” i wybierz „Usuń”)
  3. Następnie dodaj istniejący projekt do rozwiązania (kliknij prawym przyciskiem myszy projekt w „Eksploratorze rozwiązań” i wybierz „Dodaj”, a następnie „Istniejący projekt”)
  4. Zmień ścieżkę do folderu „pakiety” w pliku „YourProjectName.csproj” (Otwórz w notatniku i zmień ścieżki dla połączonych pakietów)

0

To działało dla mnie vb2019. Skopiowałem folder projektu źródłowego. Następnie wkleiłem projekt i zmieniłem nazwę folderu na cokolwiek. Aby zerwać powiązania z folderem projektu źródłowego, tymczasowo zmieniłem nazwę folderu źródłowego. Otworzyłem projekt docelowy. Ścieżki do formularzy i modułów zostały ponownie odkryte w folderze lokalnym. Przejrzałem wszystkie moje formularze i moduły, aby upewnić się, że działają. Kierowałem projektem. Zamknąłem projekt. Nazwę folderu źródłowego zmieniłem z powrotem na pierwotną nazwę. Mogę otworzyć oba projekty jednocześnie bez błędów.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.