Visual Studio извлекает откуда-то неверный путь к проекту

98

Visual Studio (и, возможно, TFS) каким-то образом (я думаю, возможно, во время слияния системы управления версиями) запуталась в пути проекта в моем решении.

Он думает, что это здесь (примеры путей для простоты):

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

тогда как на самом деле файл проекта находится здесь:

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

Я не могу, хоть убей, заставить его распознать правильное местоположение. Я пытался:

  • Удаление и повторное добавление проекта из правильного места. Появляется сообщение об ошибке The project file at C:\My Projects\ExampleSolution\ExampleProjectWrong\ExampleProjectCorrect.csproj could not be found.

  • Отредактируйте файл .sln вручную, чтобы убедиться, что все ссылки ExampleProjectCorrect.csprojимеют правильные пути.

  • Выполнение поиска в файлах в каталоге решения для правильных и неправильных путей, чтобы попытаться отследить, где студия скрывает неправильный путь.

  • Удаление каталогов кеша для VS и TFS

Я рву на себе волосы, потому что не могу воссоздать решение, поскольку в нем почти нет никакой разницы в 100 проектах и ​​он привязан к системе контроля версий с несколькими другими разработчиками, работающими над ним.

Может ли кто-нибудь указать мне в правильном направлении, где он хранит этот неправильный путь и / или как его сбросить, чтобы эта чертова штука загрузилась правильно?

Чарли Дрюитт
источник
Итак, что произойдет, если вы переместите проект в каталог ExampleProjectWrong?
Ханс Пассан,
Хорошо, некоторый прогресс .. Перемещение его не в ту папку позволяет мне загрузить его в Visual Studio. Однако я не могу сохранить его там, поскольку каталог ExampleProjectWrong является домом для другого проекта, содержащего почти такую ​​же структуру папок. Итак, есть идеи, как изменить путь к проекту, когда он загружен? Поле пути в свойствах выгруженного проекта недоступно, даже если проект выгружен?
Чарли Дрюитт
3
У меня возникла эта проблема во второй раз, но на этот раз я смог выяснить, что разветвленный проект нацелен на исходную папку, потому что я использую разные строки подключения. Это было очень странно в первый раз, когда visualstudio отлаживал файлы из исходной папки и смешивал их с файлами из ветки, и даже Log4net регистрировался в исходной папке! Был удален файл решения suo, и теперь он правильно обращается только к разветвленным файлам.
Binke
2
У меня была точно такая же проблема. Это было не так просто, как просто удалить файл suo. Пришлось: 1. Убрать из решения проблемный проект. 2. Сохраните решение. 3. Удалите .suo 4. Откройте решение и повторно добавьте проект.
SeanLAllen
1
У меня сработало удаление файла SUO.
DanielV

Ответы:

96
  1. Перейдите в раздел «Управление рабочими областями» (либо через меню «Файл / Управление исходным кодом», либо в раскрывающемся списке рабочей области в проводнике управления версиями)
  2. выберите редактировать для вашей рабочей области.
  3. В рабочих папках вы должны увидеть сопоставление каталога системы управления версиями со старым / неправильным каталогом проекта.
  4. Выберите его и нажмите удалить .
  5. Закройте VS и удалите файл suo.

Он по-прежнему ссылается не на тот каталог. Возможно, на этом этапе повторная привязка может сработать, но я этого не пробовал. Перезагрузите свой проект, и все будет хорошо.

Бенджамин Поттс
источник
1
Кроме того, вас может ввести в заблуждение ссылка на локальный путь в проводнике системы управления версиями. У меня было более одного сопоставления для моей рабочей области, и оно показывало то, что я ожидал, но когда он пытался загрузить проект, он использовал другой путь.
Бенджамин Поттс
1
.suo файл скрыт, поэтому вам нужно включить опцию «показывать все файлы и папки»
ANIL MANE
8
В Visual Studio 2015 я столкнулся с той же ошибкой. Для меня сработало удаление скрытого каталога .vs и файла .suo.
Daniel Leiszen
5
Для VS2015 ваш .suoфайл может быть не там, где вы думаете. Удалите тот, который находится рядом с вашим .slnфайлом (не забудьте «показать скрытые файлы»), а также один, скрытый в подкаталоге по адресу .\.vs\[solution_name]\v14\.suo. Как только я получу их обоих, я могу снова добавить проект. Упс - частичный кредит @DanielLeiszen (только что заметил, что он прокомментировал то же самое)
Ричард Хауэр
1
Мне пришлось удалить файл .suo и перезапустить VS, чтобы здравый смысл возобладал
Appulus
33

.suoДля меня сработало простое удаление файла решений .

Ллойд Пауэлл
источник
5
В VS2015 мне нужно было закрыть все экземпляры Visual Studio, прежде чем удаление <SolutionDir>\.vs\<SolutionName>\<VsVersion>\.suoсработало для меня.
GraehamF
12

Я столкнулся с этой проблемой после выполнения миграции с Visual Source Safe 2005 на TFS 2012. Я не мог дождаться «Мастера преобразования», который должен выйти в ближайшие пару недель, поэтому я просто запустил VSSConvert.exe. Это заняло около 6 лет истории и переместило это в TFS ... пока я не получил фактическую историю временной шкалы ... Я получил несколько записей в тот же день с комментариями, указывающими на фактические проверки истории. . неплохо.

Итак, после того, как он работал всю ночь (успешно, ура!), У меня возникли проблемы с загрузкой моих проектов, как указано в этом вопросе. По какой-то причине несколько проектов ссылались на неправильный каталог. Я проверил файлы .sln, .vsproj и получение последней версии, удаление повторного получения, добавление удаления и т. Д. Я пробовал все отмеченное здесь ... даже обновил свою рабочую область, что я даже не знаю, что это вообще сделало.

НАКОНЕЦ ... Я удалил файлы * .suo и альт. Это сработало.

Я потратил на это пару часов.

Hanzolo
источник
2
Перед удалением файла * .suo обязательно закройте все экземпляры Visual Studio, а затем снова откройте решение.
Mas
5

Немного другое решение.

TFS отображала несуществующий путь для определенного Решения. Раньше у меня был ноутбук с отдельным диском D :, но теперь у меня просто диск C :. TFS все еще думала, что мой проект хранится в D: \ Project \ MikesProject

У меня не было .suoфайла для удаления, путь D: нигде не упоминался в моих рабочих областях (похоронен под File\Source Control\Advanced\Workspacesменю), TFS показала, что у меня действительно есть последние файлы в моем (уже не существующем) D: каталог, а в TFS в VS2013 для этого проекта не было параметра «Удалить сопоставления».

Но что сделал получилось, так это просто сделать «Получить последнюю версию» проекта.

После этого новая копия кода была записана на мой диск C :, и (что интересно) теперь локальный путь был подчеркнут .

Ранее путь D: таким образом не отображался.

Странный. Очень странно.

Майк Гледхилл
источник
2
Точно такая же ситуация для меня. Я не решался нажать на курок и "Получить последнюю версию" из-за неправильного пути, но @Mike дал мне смелость!
Джонатан
2

У нас были похожие проблемы с перемещениями и переименованием. Удаление локальных каталогов, а затем повторное решение.

Тони Хопкинсон
источник
2

Даже после удаления .suoфайла и .vsпапок мне пришлось отредактировать .slnфайл и удалить старый относительный URL-адрес, SccProjectName#несмотря на SccLocalPath#то, что он правильный. По-видимому, VS также использует это имя как путь подсказки.

Адам
источник
1

Попробуйте удалить или переименовать файл .suo (включая расширение). Этот файл находится в том же месте, где находится ваш файл решения. У меня это сработало.

Мандип Джанджуа
источник
0

Просто догадываюсь, но, возможно, некоторые из ваших других проектов ссылаются на ваш проект из неправильного места? В этом случае вам нужно не просто удалить и повторно вставить проект в свое решение, вам также придется удалить и воссоздать ссылки из ссылающихся проектов (хранящихся в их файлах .csproj).

Док Браун
источник
Спасибо за ответ. на этот проект нет ссылок из других проектов в рамках решения. Вы можете объяснить, почему поиск в файлах не работает? по моему опыту, если вы дадите ему путь к каталогу «Искать в», вместо того, чтобы выбирать «Все решение», он будет искать все типы файлов, если специально не указано искать только определенные типы файлов?
Чарли Дрюитт 06
Извините, вы правы, я думал, что вы используете «Найти в файлах» только для файлов в решении, а не для каталога решения, я это пропустил. Так что это должно работать. Не могли бы вы дать более подробное описание, когда именно появляется сообщение об ошибке? Это происходит при компиляции, чтобы вы могли видеть, какой проект не удалось выполнить?
Док Браун
0

Попробовав множество рекомендаций, я удалил файл suo (снова). Последний раз сработало. Почему раньше не работало, не знаю. В общем, я считаю удаление файла suo одним из первых шагов, которые я делаю.

user3097514
источник
0

У меня было открыто решение для веб-сайта asp.net из моей ветки разработки. Затем для какой-то другой цели я открыл то же решение из основной ветки.

Я внес изменения в один из моих файлов .ascx.cs в ветке dev и установил точку останова. Когда я запускал отладчик, все мои точки останова были достигнуты в ветке Dev, за исключением .ascx.cs, который попадал в ветку Main. Понятия не имею.

Пытался очистить временную папку, но ничего не вышло.

Что сработало:

Закрыты все экземпляры Visual Studio

Снова открыл решение из ветки Dev.

Беги снова, и точки останова начали бить.

ГБ
источник
0

В моем случае я скопировал файл * .sln в папку проекта и изменил путь к проекту в файл * .sln. Только это решило проблему (по сравнению с 2015 sp1, проект winservise).

Удаление * .suo мне не помогает.

Камертон
источник
0

Еще одно решение сработало для нас - после попытки удалить suo и почти все, что упоминается в этой теме. У нас был проект в решении, который показывал призрачную версию файла csproj. Мы удалили этот файл, и наши пути исправлены в другом проекте, который мы пытались добавить.

Рондакай
источник
-1

Если вы запускаете свое веб-приложение под локальным IIS вместо IISExpress, убедитесь, что вы НАЖИЛИ кнопку «Создать виртуальный каталог», перейдя в свойства проекта. Как только это будет сделано, выполните «Чистое решение» и «Восстановить решение».

Ajinkya Surve
источник
-1

Удаление файлов obj и bin решило бы проблему ...

Моханад Шамсне
источник
-3

Я знаю, что это старая линия. Я столкнулся с той же проблемой. Мы недавно перенесли TFS, поэтому я создал новую рабочую область для сопоставления с новым сервером и сохранил старую. Каждый раз, когда я открываю решение, которое должно быть нацелено на мою новую рабочую область, VS всегда пытался загрузить проекты из моего старого каталога сопоставления, пока я не удалил свое старое рабочее пространство.

BackToSorrento
источник
на самом деле это не помогает
решить
Я думал, что моя проблема такая же. У меня было два рабочих места, одно из которых старое. Я работал в новом, создавал решение, добавлял проекты. все нормально только если я не закрыл решение. Но если я сохранил решение и попытался открыть его, VS всегда пытался загрузить проекты в решение из каталога, отображенного в моей старой рабочей области.
BackToSorrento