jak zmienić przestrzeń nazw całego projektu?

104

Modyfikuję aplikację demonstracyjną z tego artykułu: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

Muszę zaktualizować wszystkie pliki, aby używały mojej przestrzeni nazw, na przykład teraz plik znajduje się tutaj:

MySolution\MyApp\DemoApp\ViewModel\MainWindowViewModel.cs

używa takiej przestrzeni nazw:

namespace DemoApp.ViewModel
{
/// <summary>
/// The ViewModel for the application's main window.
/// </summary>
public class MainWindowViewModel : WorkspaceViewModel

Muszę przenieść plik tutaj (usuń folder DemoApp):

MySolution\MyApp\ViewModel\MainWindowViewModel.cs

a także użyć odpowiedniej przestrzeni nazw:

namespace MyApp.ViewModel
{
....

jak to zrobić w Visual Studio 2010?

Aktualizacja ok tutaj jest możliwa zduplikowana Zmień przestrzeń nazw projektu w programie Visual Studio Teraz wiem, jak zmienić przestrzeń nazw projektu, ale jak przenieść pliki w systemie plików? (pozbądź się folderu „DemoApp”)

javapowered
źródło
4
Podobnie jak FYI, niekoniecznie potrzebujesz przestrzeni nazw, aby dopasować strukturę folderów w .NET, nie jest to wymagane.
James Michael Hare
1
Jak powiedział James, nie jest to wymagane… ale zastanawiałbym się, dlaczego ktoś nie „skończył pracy” w aplikacji, nad którą muszę popracować.
NotMe
1
Jeśli chodzi o przenoszenie plików ... Hmm, wytnij / wklej i przeciągnij / upuść zwykle działa w menedżerze rozwiązań Visual Studio ... a nawet po prostu zmień nazwę folderu lub usuń. w zależności od tego, co naprawdę próbujesz zrobić.
NotMe

Odpowiedzi:

124

Wyobrażam sobie, że prosta zamiana w plikach ( Ctrl+ Shift+ H) prawie załatwi sprawę; po prostu wymienić namespace DemoAppsię namespace MyApp. Następnie skompiluj rozwiązanie i poszukaj błędów kompilacji dla nieznanych identyfikatorów. Wszystko, co jest w pełni kwalifikowane, DemoAppbędzie musiało zostać zmienione na MyApp.

Adam Maras
źródło
62
Ważny; zmień również domyślną przestrzeń nazw we właściwościach projektu; to kontroluje przestrzeń nazw dla rzeczy takich jak resx
Marc Gravell
Mam kilka plików XAML, które reprezentują okna WPF, więc to nie zadziała.
Pieter
6
Powinieneś również uruchomić Replace na wszystkich usinginstrukcjach, aby zmienić z using DemoAppna using Myapp.
swbandit
5
także zmień nazwę <add namespace = "OldNameSpace" /> we wszystkich plikach web.config w folderze widoków
neo112
@Pieter Powinieneś być w stanie zastąpić wszystko dla całej aplikacji, a następnie zaktualizować właściwości, jak sugeruje Marc, a następnie zamknąć rozwiązanie i otworzyć je ponownie, w przeciwnym razie VS ma niewytłumaczalne zachowanie z pewnym autouzupełnianiem.
Eric
153

Przejdź do miejsca, w którym przestrzeń nazw jest zadeklarowana w jednym z twoich plików. Umieść kursor na części przestrzeni nazw, którą chcesz zmienić, i naciśnij F2. Powinno to zmienić nazwę przestrzeni nazw w każdym pliku. Przynajmniej zadziałało w moim małym projekcie demonstracyjnym, który stworzyłem, aby przetestować tę odpowiedź!

W zależności od wersji VS, skrót może być również Ctrl- R, Ctrl- R.

Amy
źródło
1
z jakiegoś powodu nie działa dla mnie. Naciskam F2 i nic się nie dzieje.
javapowered
6
@javapowered, Twój skrót klawiszowy został dostosowany. Zajrzyj do opcji VS dla swoich. Dziś mój to CTRL-R CTRL-R.
Amy,
4
Uwaga: Chociaż nadal wolę tę metodę, [co zrozumiałe] nie zastąpiła odniesień w widokach i pliku web.config zawartym w katalogu Views /. Po prostu uważaj na te.
Wiseguy
3
W przypadku wersji, która nie powinna być zależna od zmian klawiszy skrótu, kliknij prawym przyciskiem myszy nazwę przestrzeni nazw i wybierz opcję zmień nazwę.
Kat,
3
Niestety to nie działa, jeśli chcesz, aby nowa nazwa zawierała .znak.
Botond Balázs
27

Kliknij prawym przyciskiem myszy rozwiązanie, przejdź do właściwości, zmień „domyślną przestrzeń nazw” w sekcji „Aplikacja”.

wprowadź opis obrazu tutaj

Anuja Lamahewa
źródło
3
Czy zmienia przestrzeń nazw w istniejących plikach?
Priyesh Kumar
5
Nie, nie będzie.
Anuja Lamahewa
3

Ctrl+ Shift+ Hnie jest prawdziwym rozwiązaniem.

Możesz użyć Resharper, aby zmienić wszystkie definicje przestrzeni nazw w swoim rozwiązaniu. To najlepszy sposób, jaki próbowałem wcześniej.

https://www.jetbrains.com/resharper/features/code_refactoring.html

Selçuk Ermaya
źródło
2
resharper wymaga pełnego, drogiego komputera stacjonarnego
Ivan G.
@IvanG. cóż, wiele projektów komercyjnych wymaga także pełnowymiarowych drogich programistów, więc maszyna i licencja R # nie są zbyt kosztowne w większym schemacie rzeczy;) Jeśli chcesz sprawdzić, czy ta (lub Adama lub Amy) metoda zadziałała poprawnie , możesz spojrzeć na Znajdź problemy z kodem
StuartLC
1
@StuartLC niestety minęły czasy dedykowanego miejsca pracy i dużego komputera stacjonarnego, do rozwoju używam naprawdę mocnego laptopa, a resharper praktycznie go zabija, więc nie mogę polecić go nikomu, kto ceni czas.
Ivan G.,
Chłopaki, których możesz po prostu użyć do zmiany nazwy za darmo, wiesz :-) Zainstaluj ją aktywuj bezpłatną wersję próbną, zmień jej nazwę i odinstaluj, jeśli chcesz ;-)
Selçuk Ermaya
1

Przeszedłem przez strukturę folderów za pomocą narzędzia o nazwie BareGrep, aby upewnić się, że mam wszystkie zmiany w przestrzeni nazw. Jest to bezpłatne narzędzie, które umożliwia przeszukiwanie plików o określonej strukturze.

Michael Murphy
źródło
dopasowanie pliku REGEX: (.exe) | (.dll) | (.cache) | (.pdb), a następnie odwróć dopasowanie . powtórz ten wzór, aby wykluczyć inne pliki binarne i tak dalej.
dwójka
1

Możesz użyć ReSharper do refaktoryzacji przestrzeni nazw. Zapewni 30-dniowy bezpłatny okres próbny. Zmieni on zestaw nazw zgodnie ze strukturą folderów.

Kroki:

1) Kliknij prawym przyciskiem myszy projekt / folder / pliki, które chcesz refaktoryzować.

2) Jeśli zainstalowałeś ReSharper, otrzymasz opcję Refactor-> Adjust Namespaces .... Więc kliknij na to.

wprowadź opis obrazu tutaj

Automatycznie zmieni przestrzenie nazw wszystkich wybranych plików.

chindirala sampath kumar
źródło
Dzięki… udało mi się to zrobić.
sgowd
0

Próbowałem wszystkiego, ale znalazłem rozwiązanie, które naprawdę działa. Tworzy niezależne rozwiązanie z nową nazwą przestrzeni nazw i tak dalej.

  1. W głównym formularzu znajdź nazwę przestrzeni nazw -> kliknij prawym przyciskiem myszy -> Refactor -> Zmień nazwę i wybierz nową nazwę. Zaznacz wszystkie pola i kliknij OK.

  2. W eksploratorze rozwiązań zmień nazwę rozwiązania na nową.

  3. W eksploratorze rozwiązań zmień nazwę projektu na nową.

  4. Zamknij VS i zmień nazwę folderu (na przykład w programie Total Commander) w folderze rozwiązania na nową nazwę.

  5. W pliku .sln zmień nazwę starej nazwy na nową.

  6. Usuń stare pliki .suo (ukryte)

  7. Uruchom VS i wczytaj projekt

  8. Projekt -> właściwości -> zmień nazwę zestawu i domyślną przestrzeń nazw na nową nazwę.

Maros
źródło
0

Wiem, że jest dość późno, ale mam nadzieję, że ta odpowiedź okaże się pomocna dla każdego, kto chce to robić od teraz. Jeśli masz CodeRush Express( darmową wersję , a „muszą”) zainstalowany, oferuje prosty sposób na zmianę szeroki nazw projektu. Po prostu umieść kursor na przestrzeni nazw, którą chcesz zmienić, a smart tagpod namespacenapisem wyświetli się (małe niebieskie pole) . Możesz kliknąć to pole lub nacisnąć Ctrl +klawisze, aby zobaczyć Renameopcję. Wybierz go, a następnie wpisz nową nazwę dla całej przestrzeni nazw projektu, kliknij Applyi wybierz miejsca w projekcie, które chcesz zmienić, w nowym oknie dialogowym i w OKnim. Gotowe! :-)

Kunal
źródło
Z mojego doświadczenia wynika, że ​​CodeRush Express nie jest „must have” (osobista opinia). Jest to przydatne do takich rzeczy.
Maarten
0

Kiedy chciałem zmienić przestrzeń nazw i nazwę rozwiązania, zrobiłem w następujący sposób:
1) zmieniłem przestrzeń nazw, wybierając ją i zmieniając jej nazwę i zrobiłem to samo z nazwą rozwiązania
2) kliknąłem żarówkę i zmieniłem nazwy wszystkich wystąpień starej przestrzeni nazw
3 ) usunął wszystkie projekty z rozwiązania
4) zamknął Visual Studio
5) przemianował wszystkie projekty w Eksploratorze Windows
6) otworzył Visual Studio i ponownie dodał wszystkie projekty
7) zmień nazwy przestrzeni nazw we wszystkich projektach w ich właściwościach
8) usunął folder bin ( ze wszystkich projektów)
9) ponownie zbuduj projekt

To zadziałało dla mnie bez żadnych problemów, a mój projekt miał również kontrolę źródła. Po wprowadzeniu tych zmian do pilota wszystko było w porządku.

przemas
źródło