Wie ändere ich den Namespace des gesamten Projekts?

104

Ich ändere die Demo-Anwendung aus diesem Artikel: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

Ich muss alle Dateien aktualisieren, um meinen Namespace zu verwenden, zum Beispiel jetzt die Datei hier:

MySolution\MyApp\DemoApp\ViewModel\MainWindowViewModel.cs

verwendet einen solchen Namespace:

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

Ich muss die Datei hierher verschieben (DemoApp-Ordner entfernen):

MySolution\MyApp\ViewModel\MainWindowViewModel.cs

und auch um den richtigen Namespace zu verwenden:

namespace MyApp.ViewModel
{
....

Wie geht das in Visual Studio 2010?

Update ok hier ist möglich doppelt Projekt-Namespace ändern In Visual Studio Jetzt weiß ich, wie man den Namespace des Projekts ändert, aber wie man Dateien im Dateisystem verschiebt? (Ordner "DemoApp" entfernen)

javapowered
quelle
4
Genau wie zu Ihrer Information benötigen Sie nicht unbedingt die Namespaces, die mit der Ordnerstruktur in .NET übereinstimmen. Sie sind nicht erforderlich.
James Michael Hare
1
Wie James sagte, ist es nicht erforderlich. Aber ich würde fragen, warum jemand den Job in einer App, an der ich arbeiten musste, nicht "beendet" hat.
NotMe
1
In Bezug auf das Verschieben von Dateien. Ähm, Ausschneiden / Einfügen und Ziehen / Ablegen funktioniert normalerweise in Visual Studio Solution Manager. Oder benennen Sie den Ordner einfach um oder löschen Sie ihn. je nachdem, was Sie wirklich versuchen zu tun.
NotMe

Antworten:

124

Ich stelle mir vor, ein einfaches Ersetzen in Dateien ( Ctrl+ Shift+ H) reicht fast aus. ersetzen Sie einfach namespace DemoAppmit namespace MyApp. Erstellen Sie anschließend die Lösung und suchen Sie nach Kompilierungsfehlern für unbekannte Bezeichner. Alles, was voll qualifiziert DemoAppist, muss geändert werden MyApp.

Adam Maras
quelle
62
Wichtig; Ändern Sie auch den Standard-Namespace in den Projekteigenschaften. Dies steuert den Namespace für Dinge wie resx
Marc Gravell
Ich habe ein paar XAML-Dateien, die WPF-Fenster darstellen, daher funktioniert dies bei mir nicht.
Pieter
6
Sie sollten auch ein Ersetzen für alle usingAnweisungen ausführen , die von using DemoAppzu geändert werden sollen using Myapp.
Swbandit
5
Benennen Sie auch <add namespace = "OldNameSpace" /> in allen web.config-Dateien im Ordner views um
neo112
@Pieter Sie sollten in der Lage sein, alle für die gesamte Anwendung zu ersetzen, gefolgt von einer Aktualisierung der Eigenschaften, wie Marc vorschlägt. Schließen Sie dann die Lösung und öffnen Sie sie erneut, da VS sonst ein unerklärliches Verhalten mit einer automatischen Vervollständigung aufweist.
Eric
152

Gehen Sie an einen Ort, an dem der Namespace in einer Ihrer Dateien deklariert ist. Setzen Sie den Cursor auf den Teil des Namespace, den Sie ändern möchten, und drücken Sie F2. Dies sollte den Namespace in jeder Datei umbenennen. Zumindest hat es in meinem kleinen Demo-Projekt funktioniert, das ich erstellt habe, um diese Antwort zu testen!

Abhängig von Ihrer VS-Version kann die Verknüpfung auch Ctrl- R, Ctrl- sein R.

Amy
quelle
1
aus irgendeinem Grund funktioniert das bei mir nicht. Ich drücke F2 und nichts passiert.
Javapowered
6
@javapowered, dann wurde Ihr Hotkey angepasst. Suchen Sie in den VS-Optionen nach Ihren. Heute ist meine STRG-R STRG-R.
Amy
4
Hinweis: Obwohl ich diese Methode immer noch bevorzuge, konnte sie [verständlicherweise] Referenzen in Ansichten und in der Datei web.config im Verzeichnis Views / nicht ersetzen. Achten Sie einfach auf diese.
Wiseguy
3
Für eine Version, die nicht von Hotkey-Änderungen abhängig sein sollte, klicken Sie einfach mit der rechten Maustaste auf den Namespace-Namen und wählen Sie Umbenennen.
Kat
3
Leider funktioniert dies nicht, wenn der neue Name ein .Zeichen enthalten soll.
Botond Balázs
27

Klicken Sie einfach mit der rechten Maustaste auf die Lösung, gehen Sie zu Eigenschaften und ändern Sie den "Standard-Namespace" im Abschnitt "Anwendung".

Geben Sie hier die Bildbeschreibung ein

Anuja Lamahewa
quelle
3
Ändert es den Namespace in vorhandenen Dateien?
Priyesh Kumar
5
Nein, das wird es nicht.
Anuja Lamahewa
3

Ctrl+ Shift+ HNicht die wirkliche Lösung.

Mit Resharper können Sie alle Namespace-Definitionen in Ihrer Lösung ändern. Dies ist der beste Weg, den ich zuvor versucht habe.

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

Selçuk Ermaya
quelle
2
Resharper erfordert eine ausgewachsene teure Desktop-Maschine
Ivan G.
@IvanG. Nun, viele kommerzielle Projekte erfordern auch vollwertige, teure Entwickler, so dass eine Maschine und eine R # -Lizenz im größeren Schema der Dinge nicht zu teuer sind;) Wenn Sie überprüfen müssen, ob diese (oder die von Adam oder Amy) Methode korrekt funktioniert hat , können Sie unter Find Code Issues
StuartLC
1
@StuartLC Leider sind die Zeiten eines dedizierten Arbeitsplatzes und eines großen Desktops vorbei. Ich verwende einen wirklich leistungsstarken Laptop für meine Entwicklung, und Resharper tötet ihn praktisch ab, sodass ich ihn niemandem empfehlen kann, der Wert auf Zeit legt.
Ivan G.
Leute, die Sie einfach zum kostenlosen Umbenennen verwenden können, wissen Sie :-) Installieren Sie die kostenlose Testversion, benennen Sie sie um und deinstallieren Sie sie, wenn Sie möchten ;-)
Selçuk Ermaya
1

Ich habe die Ordnerstruktur mit einem Tool namens BareGrep durchgesehen, um sicherzustellen, dass ich alle Namespace-Änderungen erhalten habe. Es ist ein kostenloses Tool, mit dem Sie die Dateien in einer bestimmten Dateistruktur durchsuchen können.

Michael Murphy
quelle
Dateimatch REGEX: (.exe) | (.dll) | (.cache) | (.pdb) Invertieren Sie dann die Übereinstimmung . Wiederholen Sie dieses Muster, um andere Binärdateien usw. auszuschließen.
Twobob
1

Sie können ReSharper für das Refactoring von Namespaces verwenden. Es wird 30 Tage kostenlos getestet. Namesapce wird gemäß der Ordnerstruktur geändert.

Schritte:

1) Klicken Sie mit der rechten Maustaste auf das Projekt / den Ordner / die Dateien, die Sie umgestalten möchten.

2) Wenn Sie ReSharper installiert haben, erhalten Sie die Option Refactor-> Namespaces anpassen .... Klicken Sie also darauf.

Geben Sie hier die Bildbeschreibung ein

Die Namensräume aller ausgewählten Dateien werden automatisch geändert.

Chindirala Sampath Kumar
quelle
Danke .. ich konnte das machen.
Sgowd
0

Ich habe alles versucht, aber ich habe eine Lösung gefunden, die wirklich funktioniert. Es wird eine unabhängige Lösung mit einem neuen Namespace-Namen usw. erstellt.

  1. Suchen Sie im Hauptformular den Namen des Namespace -> Rechtsklick -> Refactor -> Umbenennen und wählen Sie einen neuen Namen aus. Aktivieren Sie alle Kontrollkästchen und klicken Sie auf OK.

  2. Benennen Sie im Lösungs-Explorer den Lösungsnamen in einen neuen Namen um.

  3. Benennen Sie im Solution Explorer den Projektnamen in einen neuen Namen um.

  4. Schließen Sie VS und benennen Sie den Ordner (z. B. in Total Commander) im Lösungsordner in einen neuen Namen um.

  5. Benennen Sie in der SLN-Datei den alten Namen in einen neuen Namen um.

  6. Alte .suo-Dateien löschen (versteckt)

  7. Starten Sie VS und laden Sie das Projekt

  8. Projekt -> Eigenschaften -> Baugruppenname und Standardnamespace in einen neuen Namen ändern.

Maros
quelle
0

Ich weiß, dass es ziemlich spät ist, aber für alle, die es von nun an tun möchten, hoffe ich, dass diese Antwort eine gewisse Hilfe darstellt. Wenn Sie CodeRush Express( kostenlose Version und ein "Muss") installiert haben, bietet es eine einfache Möglichkeit, einen projektweiten Namespace zu ändern. Sie platzieren einfach Ihren Cursor auf dem Namespace, den Sie ändern möchten, und es wird ein smart tag(kleines blaues Kästchen) unter der namespaceZeichenfolge angezeigt . Sie können entweder auf dieses Feld klicken oder die Ctrl +Tasten drücken , um die RenameOption anzuzeigen. Wählen Sie es aus und geben Sie den neuen Namen für den projektweiten Namespace ein. Klicken Sie auf Applyund wählen Sie im neuen Dialogfeld die Stellen in Ihrem Projekt aus, die geändert werden sollen OK. Getan! :-)

Kunal
quelle
Nach meiner Erfahrung ist CodeRush Express kein Muss (persönliche Meinung). Es ist praktisch für solche Dinge.
Maarten
0

Als ich den Namespace und den Lösungsnamen ändern wollte, ging ich wie folgt vor:
1) Ich änderte den Namespace, indem ich ihn auswählte und umbenannte, und ich tat dasselbe mit dem Lösungsnamen.
2) Ich klickte auf die Glühbirne und benannte alle Instanzen des alten Namespace
3 um ) Alle Projekte aus der Lösung entfernt
4) Visual Studio geschlossen
5) Alle Projekte im Windows Explorer umbenannt
6) Visual Studio geöffnet und alle Projekte erneut hinzugefügt
7) Namespaces in allen Projekten in ihren Eigenschaften umbenennen
8) Bin-Ordner entfernt ( aus allen Projekten)
9) Erstellen Sie das Projekt erneut

Das hat bei mir problemlos funktioniert und mein Projekt hatte auch Quellcodeverwaltung. Alles war in Ordnung, nachdem diese Änderungen auf die Fernbedienung übertragen wurden.

przemas
quelle