Meine aktuelle Lösung zum Umbenennen des Projektordners lautet:
- Entfernen Sie das Projekt aus der Lösung.
- Benennen Sie den Ordner außerhalb von Visual Studio um.
- Fügen Sie das Projekt erneut zur Lösung hinzu.
Gibt es einen besseren Weg?
Meine aktuelle Lösung zum Umbenennen des Projektordners lautet:
Gibt es einen besseren Weg?
Antworten:
TFS-Benutzer: Wenn Sie die Quellcodeverwaltung verwenden, bei der Sie sie vor dem Umbenennen von Dateien / Ordnern warnen müssen, sehen Sie sich stattdessen diese Antwort an, die die erforderlichen zusätzlichen Schritte abdeckt.
So benennen Sie den Ordner , die Datei ( .*proj
) und den Anzeigenamen eines Projekts in Visual Studio um:
.sln
Datei direkt in einem anderen Editor wie Notepad ++ und aktualisieren Sie stattdessen die Pfade dort. (Möglicherweise müssen Sie die Lösung zuerst in TFS usw. auschecken.)Hinweis: Bei anderen Lösungsvorschlägen, bei denen das Projekt entfernt und dann erneut zur Lösung hinzugefügt wird, werden die Projektreferenzen beschädigt.
Wenn Sie diese Schritte ausführen, können Sie auch Folgendes entsprechend umbenennen:
Ändern Sie auch die Werte der folgenden Assembly-Attribute :
AssemblyProductAttribute
AssemblyDescriptionAttribute
AssemblyTitleAttribute
Es gibt eine andere Möglichkeit, dies mit den Dateien * .sol, * csproj zu tun.
Es wird so sein (relativ zur * .sol-Datei):
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shani.Commands.Impl", "Shani.Commands.Impl\Shani.Commands.Impl.csproj", "{747CFA4B-FC83-419A-858E-5E2DE2B948EE}"
Und ändern Sie einfach den ersten Teil in das neue Verzeichnis, zum Beispiel:
Impl\Shani.Commands.Impl\Shani.Commands.Impl.csproj
Vergessen Sie natürlich nicht, das gesamte Projekt in dieses Verzeichnis zu verschieben.
Dies ist in Visual Studio 2015 unkompliziert (funktioniert möglicherweise in älteren Versionen)
.sln
Datei im Editor und ändern Sie den Pfad zum csproj, dh fu\bar.csproj
→ bar\bar.csproj
.Mann, habe ich damit gekämpft? Leider gibt es in Visual Studio keine Ein-Klick-Lösung. Wenn Sie jedoch Visual Studio 2012 ausführen und Ihr Projekt mit Team Foundation Server unter Quellcodeverwaltung steht, habe ich Folgendes ausgeführt, während der Quellverlauf beibehalten wurde:
(Stellen Sie sicher, dass Sie den Kommentar von @ mjv unten lesen, da er feststellt, dass Sie Schritt 5-10 überspringen können.)
Die obige Anleitung hat bei mir funktioniert. Wenn es bei Ihnen nicht funktioniert, versuchen Sie, Ihre lokale Lösung vollständig zu löschen, und entfernen Sie die Ordnerzuordnung in Ihrem Arbeitsbereich. Starten Sie Visual Studio für alle Fälle neu. Stellen Sie sicher, dass Sie die gesamte Lösung tatsächlich von Ihrem Computer gelöscht haben. Lesen Sie nun die Lösungszuordnung zu Ihrem Arbeitsbereich und holen Sie sich die neueste Version. Versuchen Sie nun die obigen Schritte. Gleiches gilt, wenn beim Befolgen der obigen Schritte etwas schief geht. Löschen Sie einfach Ihre Lösung lokal und holen Sie sich die neueste Quelle, und Sie haben einen sauberen Plan, mit dem Sie arbeiten können.
Wenn Sie immer noch Probleme haben, stellen Sie sicher, dass Sie nichts manuell in der Lösungsdatei geändert oder andere Tricks ausprobiert haben, bevor Sie die obigen Schritte ausführen. Wenn Sie etwas geändert und eingecheckt haben, sollten Sie ein Rollback bis zu dem Punkt in Betracht ziehen, an dem Sie mit dem Umbenennen des Projekts begonnen haben.
Natürlich möchten Sie auch das Projekt selbst im Projektmappen-Explorer umbenennen. Sie können dies vor den obigen Schritten tun. Stellen Sie jedoch in diesem Fall sicher, dass Sie diese Änderung einchecken, bevor Sie die obigen Schritte anwenden. Sie können dies auch später tun. Stellen Sie jedoch sicher, dass Sie zuerst alle oben genannten Schritte ausführen und Ihre Änderungen einchecken, bevor Sie versuchen, den Projektnamen im Projektmappen-Explorer umzubenennen. Ich empfehle nicht, die obigen Schritte mit einer Umbenennung des Projektnamens im Projektmappen-Explorer zu mischen. Es könnte zwar funktionieren, aber ich würde empfehlen, es in 2 separaten Änderungssätzen zu tun.
VS2012
! Beachten Sie, dass Sie die Schritte 5 bis 10 vermeiden können (dh die umbenannten Ordner in der Quellcodeverwaltung wiederherstellen müssen), wenn Sie stattdessen die Lösung schließen und dann die Ordner in VS' Source Control Explorer
anstatt umbenennen Windows Explorer
.
Folder already exists
. Also musste ich den Ordner erneut umbenennen, WE
dann ändern SCE
und dann die Dateien in diesen Ordner kopieren, bevor es funktionierte. Folgen Sie also dem Kommentar von mjv oben. Ich habe auch nicht daran gedacht, die tatsächlichen Projektdateinamen (nicht nur in VS) ändern zu müssen, was ich nachträglich getan habe, um einige dieser Schritte zu wiederholen.
Zurzeit nicht. Nun, tatsächlich können Sie auf den defekten Projektknoten klicken und im Eigenschaftenbereich nach der Eigenschaft 'Pfad' suchen, auf das kleine Suchsymbol klicken und den neuen Pfad auswählen.
Voilà :)
Die einfachere Lösung ist die folgende:
Es sind vier Schritte erforderlich, aber sieben werden empfohlen. Am Ende des Tages wird das Projekt jedoch komplett umbenannt. Technisch gesehen muss der Ordnername für das Projekt nicht mit dem Projekt selbst übereinstimmen, sodass selbst dieser Schritt optional ist. Es kann jedoch verwirrend sein, wenn sie nicht übereinstimmen. Gleiches gilt für die Assembly- und Namespace-Namen.
In der Antwort von andersjanmyr ist es einfacher, das Projekt zuerst umzubenennen.
Nachdem diese Schritte ausgeführt wurden, möchten Sie möglicherweise andere Verweise auf Ihren alten Projektnamen umbenennen.
Aktualisieren Sie in den Projekteigenschaften den Assemblynamen und den Standardnamespace.
Dadurch wird Folgendes in der Projektdatei aktualisiert ...
<RootNamespace>SomeProjectName</RootNamespace>
<AssemblyName>SomeProjectName</AssemblyName>
... und wird den Fehler "Namespace entspricht nicht dem Speicherort der Datei, sollte lauten: 'SomeProjectName'"
Benennen Sie Ihren Root-Namespace um (wenn Sie ReSharper haben, klicken Sie mit der rechten Maustaste auf den Namespace und gehen Sie zu Refactor -> Rename).
Ändern Sie alle Vorkommen Ihres alten Projektnamens in AssemblyInfo.cs .
Für Visual Studio 2017 können Sie meine Visual Studio-Erweiterung verwenden:
Das Projekt wird umbenannt in:
[assembly: InternalsVisibleTo("MyTests")]
. Beim Umbenennen MyTests
wurde diese Referenz nicht umbenannt. Auch hier denke ich nicht, dass dies in Ihren Zuständigkeitsbereich fällt und es einfach ist, es manuell zu lösen.
Ich musste dies nur selbst tun (mit Visual Studio 2010). Wie einige Leute geantwortet haben, scheint der einfachste Schritt zu sein:
Für diejenigen, die Visual Studio + Git verwenden und den Dateiversionsverlauf beibehalten möchten (funktioniert das Umbenennen von Projekten und / oder Lösungen):
Schließen Sie Visual Studio
Duplizieren Sie in der .gitignore-Datei alle Ignorierpfade des Projekts, das Sie umbenennen möchten, mit umbenannten Versionen dieser Pfade.
Verwenden Sie den Befehl Git move wie folgt:
git mv <old_folder_name> <new_folder_name>
Weitere Optionen finden Sie in der Dokumentation: https://git-scm.com/docs/git-mv
In Ihrer SLN-Datei: Suchen Sie die Zeile, die Ihr Projekt definiert, und ändern Sie den Ordnernamen im Pfad. Die Linie sollte ungefähr so aussehen:
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "<Project name>", "<path-to-project>\<project>.csproj"
Öffnen Sie Visual Studio und klicken Sie mit der rechten Maustaste auf Projekt → Umbenennen
Benennen Sie anschließend die Namespaces um.
Ich habe gelesen, dass ReSharper einige Optionen dafür hat. Aber einfaches Suchen / Ersetzen hat den Job für mich erledigt.
Entfernen Sie alte .gitignore-Pfade.
Siehe Punkt 3 im verlinkten Artikel .
Es hat bei mir funktioniert.
Was hat bei mir in Visual Studio 2017 funktioniert:
Es sagte so etwas wie " Projekt erneut hinzufügen ". Ich habe alles wieder aufgebaut und alles war gut zu gehen.
Dependencies
>> Add reference
>> Wählen Sie Ihr neues Projekt aus )
Ich musste das oft tun. Es ist sehr nützlich, ein vorhandenes Projekt wiederzuverwenden, aber Text in Namespaces, Dateien und Ordnern (einschließlich Datei- / Verzeichnisnamen) umzubenennen.
Wenn Sie ein rekursives Suchen und Ersetzen ab dem Stammordner verwenden, werden beim Umbenennen keine Links zu Projekten in den Lösungsdateien und Projektreferenzen unterbrochen.
Zu diesem Zweck habe ich ein Projekt erstellt, um genau dies zu tun. Die Anwendung bemüht sich auch, Versionskontrollordner wie .git, .svn und die .vs-Einstellungsdatei zu ignorieren. Weitere Informationen finden Sie in der README.
Eine bewährte Lösung für die Visual Studio-Erweiterung für Data Tools for Business Intelligence (SSDT-BI 2013):
Es wurde zu 100% getestet und funktionierte in meinem Fall einwandfrei.
HINWEIS: Ich kann nicht bestätigen, ob es unter verschiedenen Projektvorlagen und anderen Visual Studio-Versionen funktioniert. Sichern Sie wie immer alles im Voraus.
Ich habe ein kleines Tool geschrieben, das all diese Schritte automatisiert. Derzeit wird auch Subversion unterstützt .
Informationen zu aktuellen Versionen finden Sie unter Visual Studio Project Renamer Infos .
Die neuesten Versionen können jetzt von der Visual Studio Project Renamer-Downloadseite heruntergeladen werden .
Feedback wird sehr geschätzt.
Ich hatte oft das gleiche Problem, ein Projekt in Visual Studio umzubenennen und den Ordnernamen, den Projektnamen und die SLN-Datei zu bearbeiten, um dies zu erreichen. Ich habe gerade ein VBScript- Skript geschrieben, das all das erreicht. Sie müssen vorsichtig mit den Zeichenfolgen sein, die Sie zum Ersetzen auswählen.
Sie müssen nur die .vbs-Datei im selben Verzeichnis wie die .sln-Datei der Lösung ablegen.
' Script parameters'
Solution = "Rename_Visual_Studio_Project" '.sln'
Project = "Rename_Visual_Studio_Project" '.csproj'
NewProject = "SUCCESS"
Const ForReading = 1
Const ForWriting = 2
Set objFso = CreateObject("Scripting.FileSystemObject")
scriptDirr = objFso.GetParentFolderName(wscript.ScriptFullName)
' Rename the all project references in the .sln file'
Set objFile = objFso.OpenTextFile(scriptDirr + "\" + Solution + ".sln", ForReading)
fileText = objFile.ReadAll
newFileText = Replace(fileText, Project, NewProject)
Set objFile = objFSO.OpenTextFile(scriptDirr + "\" + Solution + ".sln", ForWriting)
objFile.WriteLine(newFileText)
objFile.Close
' Rename the .csproj file'
objFso.MoveFile scriptDirr + "\" + Project + "\" + Project + ".csproj", scriptDirr + "\" + Project + "\" + NewProject + ".csproj"
' Rename the folder of the .csproj file'
objFso.MoveFolder scriptDirr + "\" + Project, scriptDirr + "\" + NewProject
Hinweis : Dieser Fix ist für Visual Studio 2008, sollte aber hier funktionieren.
.sln
Datei im übergeordneten Ordner..sln
Datei speichern möchten . Klicken Sie auf Yes..sln
Datei denselben Namen wie der Ordner hat. Sie ist nicht erforderlich, behält jedoch die Konsistenz bei.)Erledigt.
Bei Verwendung von TFS besteht Schritt 2 darin, den Ordner in der Quellcodeverwaltung umzubenennen und dann den neuesten zu erhalten, bevor die Lösung erneut geöffnet wird.
Wir haben kürzlich eine Beta einer kostenlosen Visual Studio-Erweiterung hochgeladen, die dieses Zeug für Sie erledigt.
Schauen Sie sich Visual Studio Gallery: Gallery Download an
Nun, ich habe es auf meine Weise gemacht
Öffnen Sie .sln in einem Texteditor und ändern Sie in der folgenden Zeile <Foldername> in Ihren neuen Ordnernamen Project ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ricky", "\ .csproj", " {021CC6B0-8CFB-4194-A103-C19AF869D965}
Öffnen Sie nach dem Ändern des Ordnernamens die SLN-Datei im Editor und ändern Sie den Pfad in einen neuen Pfad.
Ähnliche Probleme treten auf, wenn ein neues Projekt erstellt werden muss und Sie einen anderen Projektordnernamen als den Projektnamen wünschen.
Wenn Sie ein neues Projekt erstellen, wird es unter gespeichert
./path/to/pro/ject/YourProject/YourProject.**proj
Nehmen wir an, Sie wollten es direkt im ject
Ordner haben:
./path/to/pro/ject/YourProject.**proj
Meine Problemumgehung, um dies zu erreichen, besteht darin, das Projekt mit dem letzten Teil des Pfads als Namen zu erstellen, damit kein zusätzliches Verzeichnis erstellt wird:
./path/to/pro/ject/ject.**proj
Wenn Sie das Projekt jetzt in Visual Studio umbenennen, erreichen Sie das Ziel, ohne Visual Studio verlassen zu müssen:
./path/to/pro/ject/YourProject.**proj
Der Nachteil dieses Ansatzes besteht darin, dass Sie den Standard-Namespace und den Namen der Ausgabe-Binärdatei anpassen und die Namespaces in allen Dateien aktualisieren müssen, die in der Projektvorlage enthalten sind.
Ich verwende Visual Studio 2013 und TFS 2013.
Ich habe es so gemacht:
Es gibt einen einfacheren Ansatz, der in Visual Studio 2013 Update 1 getestet wurde und für Projekte mit TFS-Verbindung gilt:
Am einfachsten ist es, zur Eigenschaft des Fensters zu wechseln, den Namen der Standard-Namespaces zu ändern und dann umzubenennen.
Ich habe folgendes gemacht:
<Erstellen Sie eine Sicherungskopie des gesamten Ordners>
Benennen Sie das Projekt in Visual Studio 2013 um (optional / nicht erforderlich).
Exportieren Sie das Projekt als Vorlage.
Schließen Sie die Lösung.
Öffnen Sie die Lösung erneut
Erstellen Sie ein Projekt aus der gespeicherten Vorlage und verwenden Sie den gewünschten Namen.
Löschen Sie das vorherige Projekt aus dem Solution Explorer.
Zu diesem Zeitpunkt habe ich versucht, die neue Lösung zu kompilieren. Dazu musste ich einige Ressourcen und Header manuell aus dem alten Projektordner in den neuen Projektordner kopieren. Tun Sie dies, bis es fehlerfrei kompiliert wird. Jetzt hat dieses neue Projekt die " .exe" -Datei im vorherigen Ordner gespeichert. *
Also ->
Gehen Sie zum Windows Explorer und kopieren Sie die Lösungsdatei manuell aus dem alten Projektordner in den neuen Projektordner.
Schließen Sie die Lösung und öffnen Sie die Lösung aus dem neuen Projekt heraus.
Bei Bedarf wurde die Konfiguration wieder auf (x64) geändert.
Löschen Sie den Ordner des Projekts mit dem alten Namen aus dem Ordner der Lösung.