Visual Studio verschiebt das Projekt in einen anderen Ordner

182

Wie verschiebe ich ein Projekt in einen anderen Ordner in Visual Studio? Ich bin in meinen Projekten an diese Struktur gewöhnt.

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

Ich möchte den gesamten Namespace SomethingElse in SomethingNew umbenennen. Wie geht das am besten (ohne manuell in die SLN-Datei zu wechseln)?

Egor Pavlikhin
quelle
Verwenden Sie TFS als Versionsverwaltungsanbieter?
Bermo
Möchten Sie nur den Ordner oder das gesamte Projekt umbenennen?
Charles Gargent
Projekt, Ordner und Namespace (s).
Egor Pavlikhin

Antworten:

174

Entfernen Sie das Projekt aus Ihrer Lösung, indem Sie im Projektmappen-Explorer mit der rechten Maustaste darauf klicken und Entfernen wählen. Verschieben Sie den gesamten Projektordner, einschließlich der Unterverzeichnisse, wo immer Sie möchten. Fügen Sie das Projekt wieder zu Ihrer Lösung hinzu.

Namespace-Namen sind etwas völlig anderes. Bearbeiten Sie einfach den Quellcode.

Hans Passant
quelle
6
Das habe ich getan, aber ich dachte, es gibt eine Möglichkeit, all das zu tun, ohne das gesamte Projekt zu entfernen, wodurch ich alle Abhängigkeiten erneut hinzufüge.
Egor Pavlikhin
31
Entladen Sie alle abhängigen Projekte aus der Lösung, bevor Sie das zu verschiebende Projekt entfernen. Auf diese Weise erkennen sie das Entfernen nicht und die Projektreferenzen bleiben erhalten. Nachdem Sie das Projekt verschoben und erneut zur Lösung hinzugefügt haben, können Sie die abhängigen Projekte erneut laden.
base2
13
Vergessen Sie nicht, dass durch das Löschen einer Datei in TFS und das anschließende erneute Importieren in TFS an einem anderen Verzeichnisort oder in einem anderen Projekt der Änderungsverlauf der Datei gelöscht wird.
Paul
Ich möchte es tun, ohne dass es die Änderungshistorie verliert, damit ich immer noch Vergleiche anstellen kann, wenn ich möchte.
user734028
195

Ich habe versucht, das Projekt zu entfernen und erneut hinzuzufügen, aber dann kann das Beheben von Abhängigkeiten schmerzhaft sein.

Ich benutze diesen Ansatz:

  1. Verschieben Sie den Projektordner.
    • Wenn sich das Projekt in der Quellcodeverwaltung befindet, führen Sie die Verschiebung mithilfe von Quellcodeverwaltungsbefehlen aus.
  2. Bearbeiten Sie die Lösungsdatei in einem Texteditor. Es sollte nur einen Pfad geben, den Sie ändern müssen.
Igor ostrovsky
quelle
Auf jeden Fall einfacher! Nachdem ich die Lösung mithilfe der Textbearbeitung verschoben und bearbeitet habe, wird die Lösungsdatei unten wie eine normale Textdatei angezeigt. Wie werde ich das los?
Abriel
2
"Wenn sich das Projekt in der Quellcodeverwaltung befindet, führen Sie die Verschiebung mithilfe von Quellcodeverwaltungsbefehlen aus." .. Können Sie erklären, wie das geht?
Anish V
3
@AnishV Wenn Sie beispielsweise Git verwenden, geben Sie git mv ...statt mv .... git-mvWeitere Informationen finden Sie in der Dokumentation.
cubuspl42
3
In der .csproj-Datei müssen Sie die SolutionDir-Eigenschaft aktualisieren und alle Pfade für Projektreferenzen und Nuget-Paketspeicherorte festlegen. In der SLN-Datei müssen Sie lediglich den Pfad zum Projekt aktualisieren.
Pete
Das hat bei mir funktioniert. Der einzige Trick war, dass ich die SLN-Datei so ändern musste, dass sie nicht schreibgeschützt war, um sie zu bearbeiten, und sie dann aus Sicherheitsgründen erneut als schreibgeschützt markierte.
JustWannaFly
44
  1. Schließen Sie Ihre Lösung in VS2012
  2. Verschieben Sie Ihr Projekt an den neuen Speicherort
  3. Öffnen Sie Ihre Lösung
  4. Wählen Sie das Projekt aus, das nicht geladen werden konnte
  5. Im Eigenschaften-Werkzeugfenster gibt es einen bearbeitbaren Eintrag "Dateipfad", mit dem Sie den neuen Projektspeicherort auswählen können
  6. Stellen Sie den neuen Pfad ein
  7. Klicken Sie mit der rechten Maustaste auf das Projekt und klicken Sie auf Neu laden
Emmanuel
quelle
4
Dies funktioniert sehr gut und scheint der schnellste und einfachste Weg zu sein, ungeachtet der anderen Antworten mit viel höheren Stimmen. Es gibt einen Artikel darüber hier: msmvps.com/blogs/deborahk/archive/2010/06/30/…
Mike Rosenblum
@ MikeRosenblum Der Link ist defekt, der neue Link ist blogs.msmvps.com/deborahk/…
Roi Gavish
1
Funktioniert nicht in VS2012. Der verlinkte Artikel erwähnt auch nur VS2010.
Bassim
Funktionierte gut für mich in VS2010, einschließlich aller meiner Referenzen mit Ausnahme von 1, die ich erneut hinzufügen musste.
Kristian
@Vasanth In Visual Studio 2019 müssen Sie die SLN-Datei manuell bearbeiten, um das Projekt zu finden. und möglicherweise (wahrscheinlich) auch die .csproj-Datei, um auf den korrekten Speicherort von Nuget-Paketen zu verweisen.
Caltor
3

Was für mich funktionierte war:

  1. Entfernen Sie das Projekt aus der Lösung.
  2. Bearbeiten Sie die Projektdatei mit einem Texteditor.
  3. Aktualisieren Sie alle relativen Pfade zu den "Paketen". In meinem Fall musste ich ändern ..\packageszu..\..\..\packages da ich das Projekt in einen tieferen Ordner verschoben habe.
  4. Laden Sie das Projekt wieder in die Lösung.
Gonzalo Méndez
quelle
2

Ich hatte das gleiche Problem. Ich löste mit Verschieben die Referenzen und in weniger als 15 Minuten, ohne die Referenzen zu ändern.

Für mich war die Lösung einfach:

  1. Verschieben Sie Ihre Dateien dorthin, wo Sie sie benötigen.
  2. Löschen Sie den Ordner mit dem Namen .vs. Muss als nicht sichtbarer Ordner sein.
  3. Öffnen Sie die Lösungsdatei (.sln) mit einem einfachen Editor wie note oder notepad ++.
  4. Ändern Sie die Referenz, in der sich Ihre Datei befindet, mithilfe der folgenden Struktur: Wenn Sie Ihr Projekt in denselben Ordner legen, entfernen Sie den vorherigen Ordner oder die Referenz ".. \". Wenn Sie einen oben genannten Ordner ablegen, fügen Sie die Referenz ".. \" oder den Namen des Ordners hinzu.
  5. Speichern Sie die Datei mit den Änderungen.
  6. Öffnen Sie die Projektdatei (.csproj) und machen Sie dasselbe, entfernen Sie die Referenz oder fügen Sie sie hinzu.
  7. Speichern Sie die Änderungen.
  8. Öffnen Sie die Lösungsdatei.

Beispiele:

In der Lösungsdatei (.sln)

  • Original: Projekt ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.UI", " ScannerPDF \ PATH1.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8-A5D6933E2D7B } "Project (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," ScannerPDF \ PATH1.DataService \ PATH1.DataService.csproj "," {ED5A561B-3674-4613-ADE5-B136 } "

    Neu: Projekt ("{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 "," {ED5A561B-3674-4613-E } "

In der Projektdatei:

  • Original:

    Neu:

    Ursprüngliche Referenz: .... \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

    Neue Referenz: .. \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

Victor David Francisco Enrique
quelle
2

Zusammenfassung: Umbenennen und Verschieben in VS2019 mit Git, Beibehalten des Git-Verlaufs, Nutzung von R # ein wenig, automatische Aktualisierung der abhängigen Projektreferenz (wichtig für SLNs mit vielen Projekten, wir haben> 200)

Ich habe die folgenden Schritte ausgeführt, um C # -Projekte in Visual Studio 2019 umzubenennen und zu verschieben. Dieser Prozess verwendet R #, um Namespaces anzupassen. Der Git-Verlauf wird durch Ausführen eines "Git-MV" beibehalten (Vermeidung des Hinzufügens / Löschens des Verlaufs).

Zwei Phasen: 1) Benennen Sie das Projekt an Ort und Stelle um und 2) verschieben Sie das Projekt.

(Verwendet den Tipp von base2 zum Entladen von Projekten.)

Umbenennen

  1. VS | Projektmappen-Explorer | Klicken Sie mit der rechten Maustaste auf Projekt | Umbenennen (z. B. Utils.Foo in Foo).
  2. VS | Projektmappen-Explorer | Klicken Sie mit der rechten Maustaste auf Projekt | Eigenschaften | Ändern Sie die Felder Assembly-Name, Standard-Namespace und Assembly-Informationen
  3. Führen Sie 1 und 2 für das entsprechende Testprojekt aus (z. B. Utils.Foo.Tests).
  4. VS | Projektmappen-Explorer | Rechtsklick-Projekte (Produktion und Test) | Refactor | Namespaces anpassen
  5. XAML-Dateien, die das Projekt verwenden, müssen möglicherweise aktualisiert werden (manuell oder mit einer geeigneten globalen Suche und Ersetzung).
  6. Alle neu erstellen
  7. Verpflichten!! (um Änderungen vor dem Umzug zu übernehmen)

Hinweis: Der Ordner im Windows Explorer bleibt bis zu diesem Punkt der alte Name (z. B. Utils.Foo). Dies ist in den Verschiebungsschritten behoben.

Bewegung

Diese Methode: 1) behält den Git-Verlauf bei, 2) nutzt R #, um Namespaces atomar anzupassen, und 3) aktualisiert abhängige Projekte massenhaft (vermeidet mühsames manuelles Bearbeiten abhängiger sln- und csproj-Dateien).

  1. Entladen Sie alle Projekte in der Lösung (damit das Entfernen des Zielprojekts keine Änderungen in abhängigen Projekten auslöst).

    VS | Wählen Sie unter Lösung | alle Lösungsordner aus Klicken Sie mit der rechten Maustaste auf Projekte entladen

  2. Verschieben Sie Ordner mit git (damit der Verlauf beibehalten wird)

a) Öffnen Sie die Developer Command Prompt für 2019

b) Git-Status (um zu veranschaulichen, „nichts zu begehen, Baum sauber zu arbeiten“)

c) git mv das Projekt zB git mv "C: \ Code \ foo \ foo \ Utils.Foo" "C: \ Code \ Foo"

d) Git-Status zum Anzeigen / Überprüfen von Änderungen

  1. Entfernen Sie das Projekt

VS | Projektmappen-Explorer | Projekt auswählen | Rechtsklick | Entfernen (da alle Projekte entladen werden, werden die Verweise darauf in abhängigen Projekten NICHT entfernt)

  1. Fügen Sie das Projekt erneut hinzu (an der neuen Position in der Baumstruktur im Projektmappen-Explorer).

a) VS | Projektmappen-Explorer | Wählen Sie den übergeordneten Zielordner aus Rechtsklick | Hinzufügen | Bestehendes Projekt

  1. Laden Sie alle Projekte neu

WICHTIG: Stellen Sie sicher, dass * .csproj-Dateien für abhängige Projekte aktualisiert wurden.

(VS | Team Explorer | Änderungen | Doppelklicken Sie auf alle aufgelisteten abhängigen csproj | Inspizieren-Überprüfen der ProjectReference-Pfadänderung)

  1. Korrigieren Sie die Pfade in der einzelnen verschobenen * .csproj-Datei manuell

Verwenden Sie Notepad ++ (oder einen anderen Texteditor), um die Pfade zu korrigieren. Oft kann dies durch einfaches Suchen und Ersetzen erfolgen (z. B. ../../../../ bis ../../).

Dies wird aktualisiert ...

a) GlobalAssmeblyInfo.cs-Referenzen

b) Pfade zu Paketen

c) Pfade zu Diagrammdateien für die Abhängigkeitsüberprüfung

d) Pfade zu Regelsatzpfaden (z. B. <CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>)

  1. Schließen Sie die Lösung und öffnen Sie sie erneut (um die Projektreferenzen in einen guten Zustand zu bringen).

Alle speichern, Lösung schließen, ich bevorzuge es, bin- und obj-Ordner zu löschen, um den Verlauf zu bereinigen. Lösung erneut öffnen

  1. Bestätigen

a) VS | Team Explorer | Änderungen

i) sollte inszenierte Änderungen sehen, die die verschobenen Dateien anzeigen ii) sollte abhängige Projekte (* .csproj) sehen, die gut aktualisiert wurden Überprüfen Sie die csproj-Unterschiede und stellen Sie fest, dass die Pfade schön aktualisiert wurden !! (Dies ist die Magie, die es vermeidet, die csproj-Dateien mühsam manuell mit einem Texteditor zu aktualisieren.)

b) Überprüfen Sie im Windows Explorer, ob der alte Speicherort leer ist

c) Lösung reinigen, Lösung neu erstellen, Komponententests ausführen, Apps in sln starten.

  1. Verpflichten!!
dthal
quelle
1

In VS2012 ist das ganz einfach. Verwenden Sie einfach die Änderungszuordnungsfunktion:

  1. Erstellen Sie den Ordner, in den die Lösung verschoben werden soll.
  2. Checken Sie alle Ihre Projektdateien ein (wenn Sie Ihre Änderungen beibehalten möchten) oder setzen Sie alle ausgecheckten Dateien zurück.
  3. Schließen Sie die Lösung.
  4. Öffnen Sie den Versionsverwaltungs-Explorer.
  5. Klicken Sie mit der rechten Maustaste auf die Lösung und wählen Sie "Erweitert -> Zuordnung entfernen ...".
  6. Ändern Sie den Wert "Lokaler Ordner" in den Wert, den Sie in Schritt 1 erstellt haben.
  7. Wählen Sie "Ändern".
  8. Öffnen Sie die Lösung, indem Sie im Versionsverwaltungs-Explorer darauf doppelklicken.
Gabel
quelle
2
Das heißt, wenn Sie TFS verwenden?
Martin Ba
1

In Visual Studio Comunity 2019 habe ich das getan, was Victor David Francisco Enrique sagt, musste aber nur den unsichtbaren Ordner .vs löschen

BWS1986
quelle
0

In VS 2015

  1. Entladen Sie Ihr Projekt im Solution Explorer
  2. Erstellen Sie eine neue Lösung
  3. Kopieren Sie die Projekte in den Ordner der neuen Lösung
  4. Klicken Sie mit der rechten Maustaste auf die Lösung und fügen Sie ein vorhandenes Projekt hinzu.
  5. Wenn Sie ein Framework wie verwenden MVC, müssen Sie möglicherweise die Referenz im Referenzmanager hinzufügen.
code4j
quelle
0

Ich habe herausgefunden, dass dieser Versuch für mich funktioniert hat.

In der Community-Edition von Visual Studio 2017 wird ein Projekt unter dem Pfad "C: \ Benutzer \ Markierung \ Quelle \ Repos \ Mipmaps \ Mipmaps" erstellt. Dadurch wird ein Zugriff auf das Problem "Datei verweigert" erstellt

Jetzt können Sie das auf diese Weise beheben.

Schließen Sie Ihren Visual Studio-Prozess. Suchen Sie dann Ihr Projekt und kopieren Sie den Projektordner. Erstellen Sie jedoch zuerst einen Unterordner mit dem Namen "Projekte" in Ihrem Visual Studio 2017-Ordner in Dokumenten. Fügen Sie als Nächstes den Projektordner in Ihren Visual Studio 2017-Projektordner ein, nicht den Hauptordner von Visual Studio 2017, der in den Unterordner "Projekte" verschoben werden soll. Starten Sie anschließend Visual Studio 2017 neu. Wählen Sie dann Projektlösung öffnen. Suchen Sie dann Ihr Projekt, das Sie in Ihren Visual Studio 2017-Projektordner eingefügt haben. Bereinigen Sie dann das Projekt und erstellen Sie es neu. Es sollte einwandfrei erstellt und kompiliert werden. Hoffe, das hat allen anderen geholfen. Ich bin mir nicht sicher, warum Microsoft dachte, Ihre Projekte in einem Pfad zu erstellen, in dem Schreibberechtigungen erforderlich sind.

markk
quelle
0

Ich wollte, dass die Änderungen in Git als Verschiebungen / Umbenennungen angezeigt werden, anstatt sie zu löschen und hinzuzufügen. Also habe ich eine Kombination aus dem oben genannten und diesem Beitrag gemacht .

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

Und passen Sie die Pfade der Projekte und Baugruppen aus den Nuget-Paketen in der SLN-Datei über einen Texteditor an.

Bob Lokerse
quelle
0
  1. Kopieren Sie den Projektordner an ein neues Ziel
  2. Entfernen Sie Ihr Projekt aus der Lösung (Klicken Sie mit der rechten Maustaste auf das Projekt im "Projektmappen-Explorer" und wählen Sie "Entfernen".)
  3. Fügen Sie dann ein vorhandenes Projekt zur Lösung hinzu (Klicken Sie mit der rechten Maustaste auf das Projekt im "Projektmappen-Explorer" und wählen Sie "Hinzufügen" und dann "Vorhandenes Projekt".)
  4. Ändern Sie den Pfad in den Ordner "packages" in der Datei "YourProjectName.csproj" (Öffnen Sie ihn im Editor und ändern Sie die Pfade für verknüpfte Pakete).
Ein weiterer Mi.
quelle
0

Das hat bei mir funktioniert vb2019. Ich habe meinen Quellprojektordner kopiert. Ich habe dann das Projekt eingefügt und den Ordner in einen beliebigen Ordner umbenannt. Um die Verbindung zum Quellprojektordner wiederherzustellen, habe ich den Quellordner vorübergehend umbenannt. Ich habe mein Zielprojekt geöffnet. Die Pfade zu den Formularen und Modulen wurden im lokalen Ordner erneut ermittelt. Ich habe alle meine Formulare und Module durchgesehen, um sicherzustellen, dass sie funktionieren. Ich habe das Projekt geleitet. Ich habe das Projekt geschlossen. Ich habe den Quellprojektordner wieder in den ursprünglichen Namen umbenannt. Ich kann beide Projekte gleichzeitig ohne Fehler öffnen.

Sandig
quelle