Visual Studio ruft von irgendwoher einen falschen Pfad zu einem Projekt ab

98

Visual Studio (und möglicherweise TFS) ist irgendwie (ich denke vielleicht während einer Zusammenführung der Quellcodeverwaltung) über den Pfad eines Projekts in meiner Lösung verwirrt.

Es glaubt, dass es hier ist (Beispielpfade zur Vereinfachung):

C:\My Projects\ExampleSolution\ExampleProjectWrong\ExampleProjectCorrect.csproj

Tatsächlich befindet sich die Projektdatei hier:

C:\My Projects\ExampleSolution\ExampleProjectCorrect\ExampleProjectCorrect.csproj

Ich kann es für mein ganzes Leben nicht dazu bringen, den richtigen Ort zu erkennen. Ich habe versucht:

  • Entfernen und erneutes Hinzufügen des Projekts vom richtigen Speicherort. Es wird eine Fehlermeldung angezeigt The project file at C:\My Projects\ExampleSolution\ExampleProjectWrong\ExampleProjectCorrect.csproj could not be found.

  • Manuelles Bearbeiten der SLN-Datei, um sicherzustellen, dass alle Referenzen ExampleProjectCorrect.csprojdie richtigen Pfade haben.

  • Suchen Sie in Dateien im Lösungsverzeichnis nach den richtigen und falschen Pfaden, um herauszufinden, wo Studio den falschen Pfad versteckt.

  • Löschen der Cache-Verzeichnisse für VS und TFS

Ich reiße mir die Haare aus, weil ich die Lösung nicht neu erstellen kann, da sie nahezu 100 Projekte umfasst und mit mehreren anderen Entwicklern, die daran arbeiten, an die Quellcodeverwaltung gebunden ist.

Kann mich jemand in die richtige Richtung weisen, wo dieser falsche Pfad gespeichert wird und / oder wie er zurückgesetzt werden kann, damit das verdammte Ding richtig geladen wird?

Charlie Drewitt
quelle
Was passiert also, wenn Sie das Projekt in das Verzeichnis ExampleProjectWrong verschieben?
Hans Passant
Ok, einige Fortschritte. Wenn ich es in den falschen Ordner verschiebe, kann ich es in Visual Studio laden. Ich kann es dort jedoch nicht behalten, da sich im Verzeichnis 'ExampleProjectWrong' ein anderes Projekt befindet, das fast dieselbe Ordnerstruktur enthält. Irgendwelche Ideen, wie Sie den Pfad des Projekts ändern können, nachdem ich es geladen habe? Das Pfadfeld in den Eigenschaften des entladenen Projekts ist nicht verfügbar, auch wenn das Projekt entladen ist.
Charlie Drewitt
3
Ich habe dieses Problem jetzt zum zweiten Mal bekommen, aber dieses Mal konnte ich herausfinden, dass das verzweigte Projekt auf den ursprünglichen Ordner abzielte, weil ich verschiedene Verbindungszeichenfolgen verwende. Dies war beim ersten Mal sehr seltsam, da Visualstudio Dateien aus dem Quellordner debuggte und sie mit Dateien aus dem Zweig mischte und sogar Log4net im Originalordner protokollierte! Hat die Lösung suo - Datei löschen und es wird jetzt korrekt nur die verzweigten Dateien zugreifen.
Binke
2
Ich hatte genau das gleiche Problem. Es war nicht ganz so einfach, nur die Suo-Datei zu löschen. Ich musste: 1. Das fehlerhafte Projekt aus der Lösung entfernen. 2. Speichern Sie die Lösung. 3. Löschen Sie die .suo 4. Öffnen Sie die Lösung und fügen Sie das Projekt erneut hinzu.
SeanLAllen
1
Das Löschen der SUO-Datei hat bei mir funktioniert.
DanielV

Antworten:

96
  1. Gehen Sie zu Arbeitsbereiche verwalten (entweder über das Menü Datei / Quellcodeverwaltung oder das Dropdown-Menü Arbeitsbereich im Versionsverwaltungs-Explorer).
  2. Wählen Sie Bearbeiten für Ihren Arbeitsbereich.
  3. Unter Arbeitsordnern sollte eine Zuordnung für das Versionsverwaltungsverzeichnis zum alten / falschen Projektverzeichnis angezeigt werden.
  4. Wählen Sie es aus und klicken Sie auf Entfernen .
  5. Schließen Sie VS und löschen Sie die Suo-Datei.

Es verweist immer noch auf das falsche Verzeichnis. Vielleicht funktioniert das erneute Binden an diesem Punkt, aber das habe ich nicht versucht. Laden Sie Ihr Projekt neu und Sie sollten bereit sein.

Benjamin Potts
quelle
1
Lassen Sie sich auch von der lokalen Pfadverknüpfung im Versionsverwaltungs-Explorer täuschen. Ich hatte mehr als eine Zuordnung für meinen Arbeitsbereich und es zeigte, was ich dort erwartet hatte, aber als es versuchte, das Projekt zu laden, verwendete es den anderen Pfad.
Benjamin Potts
1
Die .suo-Datei ist ausgeblendet, daher müssen Sie die Option "Alle Dateien und Ordner
anzeigen" aktivieren
8
In Visual Studio 2015 ist der gleiche Fehler aufgetreten. Was für mich funktioniert hat, war das versteckte .vs-Verzeichnis und die .suo-Datei zu löschen.
Daniel Leiszen
5
Für VS2015 befindet sich Ihre .suoDatei möglicherweise nicht dort, wo Sie denken. Löschen Sie die .slnDatei , die sich neben Ihrer Datei befindet (vergessen Sie nicht, "versteckte Dateien anzuzeigen"), und es gibt auch eine Datei, die sich in einem Unterverzeichnis unter versteckt .\.vs\[solution_name]\v14\.suo. Sobald ich beide bekommen hatte, konnte ich das Projekt wieder hinzufügen. Ups - teilweise Dank an @DanielLeiszen (gerade bemerkt, dass er das gleiche kommentierte)
Richard Hauer
1
Ich musste die .suo-Datei löschen und VS neu starten, damit die Vernunft sich durchsetzte
Appulus
33

Das einfache Löschen der Lösungsdatei .suohat bei mir funktioniert.

Lloyd Powell
quelle
5
In VS2015 musste ich alle Visual Studio-Instanzen schließen, bevor das Löschen <SolutionDir>\.vs\<SolutionName>\<VsVersion>\.suofür mich funktioniert hat.
GraehamF
12

Ich hatte dieses Problem, nachdem ich eine Migration von Visual Source Safe 2005 zu TFS 2012 durchgeführt hatte. Ich konnte es kaum erwarten, dass der "Konvertierungsassistent" in den nächsten Wochen veröffentlicht wird, also habe ich nur VSSConvert.exe ausgeführt. Dies dauerte ungefähr 6 Jahre und verschob es in TFS. Während ich nicht den tatsächlichen Zeitleistenverlauf erhielt, erhielt ich am selben Tag eine Reihe von Einträgen mit den Kommentaren, die die tatsächlichen Eincheckvorgänge des Verlaufs angaben. . nicht schlecht.

Nachdem es die ganze Nacht lief (Erfolgreich, yay!), Hatte ich Probleme beim Laden meiner Projekte, genau wie in dieser Frage angegeben. Aus irgendeinem Grund wurden einige Projekte auf ein falsches Verzeichnis verwiesen. Ich habe die .sln- und die .vsproj-Dateien überprüft und die neuesten Informationen abgerufen, das erneute Abrufen gelöscht, das Entfernen hinzugefügt usw. Ich habe alles versucht, was hier vermerkt ist ... sogar meinen Arbeitsbereich aktualisiert, was ich nicht sicher bin, was das überhaupt getan hat.

ENDLICH ... Ich habe die * .suo- Dateien und die Bratsche gelöscht . Es funktionierte.

Ich habe ein paar Stunden damit verbracht.

Hanzolo
quelle
2
Stellen Sie vor dem Löschen der * .suo-Datei sicher, dass alle Visual Studio-Instanzen geschlossen sind, und öffnen Sie die Lösung erneut.
Mas
5

Eine etwas andere Lösung.

TFS zeigte einen nicht vorhandenen Pfad für eine bestimmte Lösung an. Früher hatte ich einen Laptop mit einem separaten D: -Laufwerk, jetzt habe ich nur noch ein C: -Laufwerk. TFS dachte immer noch, mein Projekt sei unter D: \ Project \ MikesProject gespeichert

Ich hatte keine .suoDatei zum Löschen, der D: -Pfad wurde nirgendwo in meinen Arbeitsbereichen erwähnt (vergraben unter demFile\Source Control\Advanced\Workspaces Menü ), TFS zeigte, dass ich die neuesten Dateien in meinem (nicht mehr vorhandenen) D: hatte. Verzeichnis, und TFS in VS2013 hatte für dieses Projekt keine Option "Zuordnungen entfernen".

Aber was hat es getan ? funktioniert hat, war, einfach eine "Neueste Version" für das Projekt zu erstellen.

Danach wurde eine neue Kopie des Codes auf mein Laufwerk C: geschrieben, und (interessanterweise) wurde nun der lokale Pfad unterstrichen angezeigt .

Bisher wurde der D: -Pfad nicht so angezeigt.

Seltsam. Sehr komisch.

Mike Gledhill
quelle
2
Genau die gleiche Situation für mich. Ich zögerte wegen dieses falschen Pfades, den Abzug zu betätigen und "Get Latest" zu machen, aber @Mike gab mir den Mut!
Jonathan
2

Wir hatten ähnliche Probleme mit Verschiebungen und Umbenennungen. Löschen Sie die lokalen Verzeichnisse und lösen Sie sie erneut.

Tony Hopkinson
quelle
2

Selbst nach dem Löschen der .suoDatei und der .vsOrdner musste ich die .slnDatei bearbeiten und die alte relative URL entfernen, SccProjectName#obwohl SccLocalPath#sie korrekt war. Anscheinend verwendet VS den Namen auch als Hinweispfad.

Adam
quelle
1

Versuchen Sie, die .suo-Datei (einschließlich der Erweiterung) zu löschen oder umzubenennen. Diese Datei befindet sich am selben Speicherort wie Ihre Lösungsdatei. Es hat bei mir funktioniert.

Mandeep Janjua
quelle
0

Nur raten, aber vielleicht verweisen einige Ihrer anderen Projekte auf Ihr Projekt vom falschen Ort? In diesem Fall müssen Sie das Projekt nicht nur löschen und erneut in Ihre Lösung einfügen, sondern auch die Referenzen aus den referenzierenden Projekten löschen und neu erstellen (gespeichert in ihren .csproj-Dateien).

Doc Brown
quelle
Danke für die Antwort. Das Projekt wird von keinem anderen Projekt in der Lösung referenziert. Können Sie erklären, warum das Finden in Dateien nicht funktioniert? Nach meiner Erfahrung werden alle Dateitypen durchsucht, wenn Sie ihm einen Verzeichnispfad für "Suchen in" geben, anstatt "Gesamte Lösung" auszuwählen, es sei denn, Sie werden ausdrücklich angewiesen, nur bestimmte Dateitypen zu durchsuchen.
Charlie Drewitt
Entschuldigung, Sie haben Recht, ich dachte, Sie verwenden "In Dateien suchen" nur für Dateien in der Lösung, nicht für das Lösungsverzeichnis. Das habe ich verpasst. Also sollte es funktionieren. Können Sie eine ausführlichere Beschreibung geben, wenn genau die Fehlermeldung angezeigt wird? Tritt es beim Kompilieren auf, sodass Sie sehen können, welches Projekt kompiliert wurde?
Doc Brown
0

Nachdem ich viele Empfehlungen ausprobiert hatte, löschte ich die Suo-Datei (erneut). Das letzte Mal hat funktioniert. Warum es früher nicht funktioniert hat, weiß ich nicht. Im Allgemeinen finde ich das Löschen der Suo-Datei einer der ersten Schritte, die ich mache.

user3097514
quelle
0

Ich hatte meine asp.net-Website-Lösung von meinem Dev Branch aus geöffnet. Dann habe ich für einen anderen Zweck dieselbe Lösung aus der Hauptniederlassung geöffnet.

Ich habe eine Änderung an einer meiner .ascx.cs-Dateien im dev-Zweig vorgenommen und den Haltepunkt festgelegt. Als ich den Debugger ausführte, wurden alle meine Haltepunkte im Dev-Zweig getroffen, mit Ausnahme der .ascx.cs, die den Hauptzweig traf. Habe keine Ahnung.

Es wurde versucht, den temporären Ordner zu bereinigen, aber es hat nicht funktioniert.

Was hat funktioniert:

Alle Instanzen von Visual Studio geschlossen

Öffnete die Lösung erneut vom Dev-Zweig.

Laufen Sie erneut und die Haltepunkte fingen an zu schlagen.

gbs
quelle
0

In meinem Fall habe ich die * .sln-Datei in den Projektordner kopiert und den Pfad zum Projekt in die * .sln-Datei geändert. Nur so wurde das Problem behoben (vs 2015 sp1, Winservise-Projekt).

Löschen * .suo hilft mir nicht.

Kamerton
quelle
0

Eine weitere Lösung hat für uns funktioniert - nachdem wir versucht haben, suo und fast alles, was in diesem Thread erwähnt wird, zu löschen. Wir hatten ein Projekt in der Lösung, das eine Geisterversion der csproj-Datei zeigte. Wir haben diese Datei gelöscht und unsere Pfade für ein anderes Projekt festgelegt, das wir hinzufügen wollten.

Rondakay
quelle
-1

Wenn Sie Ihre Webanwendung unter Local IIS anstelle von IISExpress ausführen, klicken Sie in den Projekteigenschaften auf die Schaltfläche "Virtuelles Verzeichnis erstellen". Führen Sie anschließend "Clean Solution" und "Rebuild Solution" aus.

Ajinkya Surve
quelle
-1

Das Löschen von obj- und bin-Dateien würde das Problem lösen ...

Mohanad Shamsneh
quelle
-3

Ich weiß, dass es eine alte Linie ist. Ich habe gerade das gleiche Problem durchgemacht. Wir haben kürzlich das TFS migriert, daher habe ich einen neuen Arbeitsbereich erstellt, um ihn einem neuen Server zuzuordnen, und den alten beibehalten. Jedes Mal, wenn ich eine Lösung öffne, die auf meinen neuen Arbeitsbereich abzielen soll, hat VS versucht, Projekte aus meinem alten Zuordnungsverzeichnis zu laden, bis ich meinen alten Arbeitsbereich entfernt habe.

BackToSorrento
quelle
Dies bietet keine wirkliche Hilfe für die erste Frage
vlad_tepesch
Ich dachte, mein Problem hätte die gleiche Natur. Ich hatte zwei Arbeitsbereiche, von denen einer alt ist. Ich habe in einem neuen gearbeitet, eine Lösung erstellt und Projekte hinzugefügt. Alles ist nur in Ordnung, wenn ich die Lösung nicht geschlossen habe. Wenn ich die Lösung jedoch gespeichert und versucht habe, sie zu öffnen, hat VS immer versucht, Projekte in die Lösung aus dem Verzeichnis zu laden, das in meinem alten Arbeitsbereich zugeordnet ist.
BackToSorrento