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”)


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.


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.


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


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


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.


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.


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


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! :-)


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.

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.