Program Visual Studio pobiera niepoprawną ścieżkę do projektu z dowolnego miejsca

98

Visual Studio (i prawdopodobnie TFS) w jakiś sposób (myślę, że być może podczas scalania kontroli źródła) pomyliło się co do ścieżki projektu w moim rozwiązaniu.

Wydaje się, że jest tutaj (przykładowe ścieżki prostoty):

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

podczas gdy w rzeczywistości plik projektu znajduje się tutaj:

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

Nie mogę za całe życie sprawić, by rozpoznał właściwą lokalizację. Próbowałem:

  • Usunięcie i ponowne dodanie projektu z właściwej lokalizacji. Pojawia się komunikat o błędzie The project file at C:\My Projects\ExampleSolution\ExampleProjectWrong\ExampleProjectCorrect.csproj could not be found.

  • Ręczna edycja pliku .sln, aby upewnić się, że wszystkie odwołania ExampleProjectCorrect.csprojmają prawidłowe ścieżki.

  • Wyszukiwanie w plikach w katalogu rozwiązania zarówno poprawnych, jak i niepoprawnych ścieżek, aby spróbować wyśledzić, gdzie studio ukrywa niepoprawną ścieżkę.

  • Usuwanie katalogów pamięci podręcznej dla VS i TFS

Rwę sobie włosy z głowy, ponieważ nie mogę odtworzyć rozwiązania, ponieważ ma blisko 100 projektów bez różnicy i jest powiązany z kontrolą źródła z kilkoma innymi programistami, którzy nad nim pracują.

Czy ktoś może wskazać mi właściwy kierunek, gdzie przechowuje tę niewłaściwą ścieżkę i / lub jak ją zresetować, aby ta cholerna rzecz załadowała się poprawnie?

Charlie Drewitt
źródło
Więc co się stanie, jeśli przeniesiesz projekt do katalogu ExampleProjectWrong?
Hans Passant
OK, postęp ... Przeniesienie go do złego folderu pozwala mi załadować go w Visual Studio. Nie mogę go tam jednak zatrzymać, ponieważ katalog „ExampleProjectWrong” jest domem dla innego projektu, zawierającego prawie taką samą strukturę folderów. Czy są jakieś pomysły, jak zmienić ścieżkę projektu teraz, gdy go załadowałem? Pole ścieżki we właściwościach zwolnionego projektu jest niedostępne, nawet jeśli projekt jest wyładowany?
Charlie Drewitt
3
Mam ten problem po raz drugi, ale tym razem udało mi się ustalić, że projekt rozgałęziony był ukierunkowany na oryginalny folder, ponieważ używam różnych ciągów połączeń. To było bardzo dziwne za pierwszym razem, powodując debugowanie przez visualstudio plików z folderu źródłowego i mieszanie go z plikami z gałęzi, a nawet Log4net logował się do oryginalnego folderu! Czy usunięcie pliku suo rozwiązanie i to jest teraz poprawnie dostępu tylko rozgałęzione plików.
Binke
2
Miałem dokładnie ten sam problem. Nie było to tak proste, jak samo usunięcie pliku suo. Musiałem: 1. Usunąć naruszający projekt z rozwiązania. 2. Zapisz rozwiązanie. 3. Usuń plik .suo 4. Otwórz rozwiązanie i ponownie dodaj projekt.
SeanLAllen
1
Usunięcie pliku SUO działało dla mnie.
DanielV

Odpowiedzi:

96
  1. Przejdź do Zarządzaj obszarami roboczymi (przez menu Plik / Kontrola źródła lub menu rozwijane obszaru roboczego w Eksploratorze kontroli źródła)
  2. wybierz edycję dla swojego obszaru roboczego.
  3. W folderach roboczych powinieneś zobaczyć mapowanie katalogu kontroli źródła do starego / niewłaściwego katalogu projektu.
  4. Wybierz go i kliknij usuń .
  5. Zamknij VS i usuń plik suo.

Nadal odwołuje się do niewłaściwego katalogu. Może ponowne wiązanie może zadziałać w tym momencie, ale tego nie próbowałem. Załaduj ponownie swój projekt i wszystko powinno być gotowe.

Benjamin Potts
źródło
1
Ponadto daj się zwieść odsyłaczowi do ścieżki lokalnej w eksploratorze kontroli źródła. Miałem więcej niż jedno mapowanie dla mojego obszaru roboczego i pokazywało to, czego się tam spodziewałem, ale kiedy próbowało załadować projekt, korzystało z drugiej ścieżki.
Benjamin Potts
1
Plik .suo jest ukryty, więc musisz włączyć opcję "pokaż wszystkie pliki i foldery"
ANIL MANE
8
W Visual Studio 2015 napotkałem ten sam błąd. Udało mi się usunąć ukryty katalog .vs i plik .suo.
Daniel Leiszen
5
W przypadku VS2015 .suoplik może nie być tam, gdzie myślisz. Usuń ten, który znajduje się obok twojego .slnpliku (nie zapomnij „pokazać ukrytych plików”), a także jest ukryty w podkatalogu pod adresem .\.vs\[solution_name]\v14\.suo. Po zdobyciu obu mogłem ponownie dodać projekt. Ups - częściowe uznanie dla @DanielLeiszen (właśnie zauważyłem, że skomentował to samo)
Richard Hauer
1
Musiałem usunąć plik .suo i zrestartować VS, aby zachować rozsądek
Appulus
33

Po prostu usunięcie .suopliku rozwiązań działało dla mnie.

Lloyd Powell
źródło
5
W VS2015 musiałem zamknąć wszystkie wystąpienia Visual Studio, zanim usuwanie <SolutionDir>\.vs\<SolutionName>\<VsVersion>\.suozadziałało.
GraehamF
12

Miałem do czynienia z tym problemem po przeprowadzeniu migracji z programu Visual Source Safe 2005 do TFS 2012. Nie mogłem się doczekać, aż „Kreator konwersji” pojawi się w ciągu następnych kilku tygodni, więc właśnie uruchomiłem VSSConvert.exe. Zajęło to około 6 lat historii i przeniosło to do TFS .. podczas gdy nie otrzymałem aktualnej historii osi czasu .. Otrzymałem kilka wpisów tego samego dnia z komentarzami wskazującymi na faktyczne zameldowania w historii. . nie jest zły.

Więc po tym, jak działał przez całą noc (Pomyślnie, yay!), Miałem problemy z załadowaniem moich projektów, tak jak brzmiało to pytanie. Z jakiegoś powodu kilka projektów było odwoływanych do niewłaściwego katalogu. Sprawdziłem pliki .sln, .vsproj i pobierałem najnowsze, usuwałem ponowne pobieranie, dodawałem usuwanie itp. Próbowałem wszystkiego, co tu podano ... nawet uaktualniając mój obszar roboczy, co nawet nie jestem pewien.

WRESZCIE ... usunąłem pliki * .suo i altówkę. Zadziałało.

Spędziłem nad tym kilka godzin.

hanzolo
źródło
2
Przed usunięciem pliku * .suo należy zamknąć wszystkie wystąpienia programu Visual Studio, a następnie ponownie otworzyć rozwiązanie.
Mas
5

Nieco inne rozwiązanie.

TFS wyświetlał nieistniejącą ścieżkę dla określonego rozwiązania. Wcześniej miałem laptopa z oddzielnym napędem D :, ale teraz mam tylko napęd C:. TFS nadal uważało, że mój projekt jest przechowywany w D: \ Project \ MikesProject

Nie miałem .suopliku do usunięcia, ścieżka D: nie została wymieniona nigdzie w moich obszarach roboczych (ukryta w File\Source Control\Advanced\Workspacesmenu), TFS pokazało, że mam najnowsze pliki w moim (już nieistniejącym) D: katalogu, a TFS w VS2013 nie miał opcji „Usuń mapowania” dla tego projektu.

Ale to, co zrobił pracy było po prostu zrobić „Pobierz najnowszą wersję” na projekcie.

Po wykonaniu tej czynności nowa kopia kodu została zapisana na moim dysku C: i (co ciekawe), teraz ścieżka lokalna została podkreślona .

Wcześniej ścieżka D: nie była wyświetlana w ten sposób.

Dziwny. Bardzo dziwne.

Mike Gledhill
źródło
2
Dokładnie taka sama sytuacja dla mnie. Wahałem się, czy pociągnąć za spust i „Pobierz najnowsze” z powodu tej niewłaściwej ścieżki, ale @Mike dodała mi odwagi!
Jonathan,
2

Mieliśmy podobne problemy z przenoszeniem i zmianą nazw. Usunięcie lokalnych katalogów, a następnie ponowne rozwiązanie go.

Tony Hopkinson
źródło
2

Nawet po usunięciu .suopliku i .vsfolderów musiałem edytować .slnplik i usunąć stary względny adres URL, SccProjectName#mimo że SccLocalPath#był poprawny. Najwyraźniej VS używa również nazwy jako ścieżki podpowiedzi.

Adam
źródło
1

Spróbuj usunąć lub zmienić nazwę pliku .suo (łącznie z rozszerzeniem). Ten plik znajduje się w tej samej lokalizacji, w której znajduje się plik rozwiązania. U mnie to zadziałało.

Mandeep Janjua
źródło
0

Zgaduję, ale być może niektóre z Twoich innych projektów odwołują się do Twojego projektu z niewłaściwej lokalizacji? W takim przypadku musisz nie tylko usunąć i ponownie wstawić projekt do rozwiązania, ale także usunąć i odtworzyć odniesienia z projektów odwołujących się (przechowywane w ich plikach .csproj).

Doc Brown
źródło
Dzięki za odpowiedzi. projekt nie jest przywoływany z żadnego innego projektu w ramach rozwiązania. czy możesz wyjaśnić, dlaczego funkcja znajdowania w plikach nie działa? z mojego doświadczenia wynika, że ​​jeśli podasz mu ścieżkę do katalogu „Szukaj w”, zamiast wybierać „Całe rozwiązanie”, przeszuka on wszystkie typy plików, chyba że wyraźnie zalecono przeszukiwanie tylko określonych typów plików?
Charlie Drewitt
Przepraszamy, masz rację, myślałem, że używasz opcji „Znajdź w plikach” tylko dla plików w rozwiązaniu, a nie dla katalogu rozwiązania, przegapiłem to. Więc powinno działać. Czy możesz podać bardziej szczegółowy opis, kiedy dokładnie pojawia się komunikat o błędzie? Czy występuje podczas kompilacji, więc możesz zobaczyć, która kompilacja projektu się nie powiodła?
Doc Brown
0

Po wypróbowaniu wielu zaleceń usunąłem plik suo (ponownie). Ostatni raz pracował. Dlaczego wcześniej nie zadziałało, nie wiem. Ogólnie uważam, że usunięcie pliku suo jest jednym z pierwszych kroków, które robię.

user3097514
źródło
0

Moje rozwiązanie witryny internetowej asp.net zostało otwarte z mojego oddziału deweloperskiego. Następnie w innym celu otworzyłem to samo rozwiązanie z głównego oddziału.

Dokonałem zmiany w jednym z moich plików .ascx.cs w gałęzi dev i ustawiłem punkt przerwania. Kiedy uruchomiłem debugger, wszystkie moje punkty przerwania zostały trafione w gałęzi deweloperskiej z wyjątkiem .ascx.cs, który trafiał do gałęzi głównej. Nie mam pojęcia.

Próbowałem wyczyścić folder tymczasowy, ale nie zadziałało.

Co zadziałało:

Zamknięto wszystkie wystąpienia programu Visual Studio

Ponownie otworzyłem rozwiązanie z gałęzi Dev.

Uruchom ponownie, a punkty przerwania zaczęły uderzać.

GBS
źródło
0

W moim przypadku skopiowałem plik * .sln do folderu projektu i zmieniłem ścieżkę do projektu na plik * .sln. Tylko to rozwiązało problem (w porównaniu z 2015 sp1, projekt winservise).

Usunięcie * .suo mi nie pomaga.

Kamerton
źródło
0

Sprawdziło się u nas jeszcze jedno rozwiązanie - po próbie usunięcia suo i prawie wszystkiego, o czym mowa w tym wątku. W rozwiązaniu mieliśmy projekt, który wyświetlał wersję widmową pliku csproj. Usunęliśmy ten plik, a nasze ścieżki zostały naprawione w innym projekcie, który próbowaliśmy dodać.

Rondakay
źródło
-1

Jeśli używasz aplikacji sieci Web w lokalnych usługach IIS zamiast w usługach IISExpress, upewnij się, że naciśniesz przycisk „Utwórz katalog wirtualny”, przechodząc do właściwości projektu. Gdy to zrobisz, wykonaj „Wyczyść rozwiązanie” i „Przebuduj rozwiązanie”.

Ajinkya Surve
źródło
-1

Usunięcie plików obj i bin rozwiązałoby problem ...

Mohanad Shamsneh
źródło
-3

Wiem, że to stara kwestia. Właśnie przeszedłem przez ten sam problem. Niedawno przeprowadziliśmy migrację TFS, więc utworzyłem nowy obszar roboczy do mapowania na nowy serwer i zachowałem stary. Za każdym razem, gdy otwieram rozwiązanie, które ma być przeznaczone dla mojego nowego obszaru roboczego, VS zawsze próbował załadować projekty z mojego starego katalogu mapowania, dopóki nie usunąłem starego obszaru roboczego.

BackToSorrento
źródło
to naprawdę nie pomaga w rozwiązaniu wstępnego pytania
vlad_tepesch,
Myślałem, że mój problem ma ten sam charakter. Miałem dwa obszary robocze, z których jeden jest stary. Pracowałem nad nowym, tworzyłem rozwiązanie, dodawałem projekty. wszystko jest w porządku tylko jeśli nie zamknąłem rozwiązania. Ale jeśli zapisałem rozwiązanie i próbowałem je otworzyć, VS zawsze próbował załadować projekty w rozwiązaniu z katalogu zmapowanego w moim starym obszarze roboczym.
BackToSorrento