Файл проекта был перемещен переименован или не на вашем компьютере

150

Я получаю эту ошибку при попытке загрузить проект VS 2008 из системы управления версиями TFS:

Файл проекта был перемещен, переименован или отсутствует на вашем компьютере

После того, как я нажимаю ОК, проект говорит «недоступен». В чем проблема? Как мне решить это? У меня никогда не было этой проблемы раньше. В некоторых блогах говорилось, что нужно удалить файл .suo, но я не могу найти файл .suo. Я удалил весь проект на своем локальном компьютере, чтобы в следующий раз, когда он откроется, он создал новый, но я все еще получаю ту же ошибку.

sineas
источник
28
О, как же я ненавижу TFS за то, что у меня такие головные боли!
Джон Лейдгрен
2
Спуститесь, вы найдете правильный ответ здесь.
Клавдий

Ответы:

270

Обычно это помогает удалить параметры пользователя решения, также называемые «SUO».

ВС до 2013 года

В старых VS он хранится как «скрытый» SolutionName.suoв той же папке, что и основной .slnфайл.

VS2015 или позже

В VS2015 те же данные были перемещены в «скрытую» .vsпапку в той же папке, что и основной .slnфайл.

Stanley.Goldman
источник
6
+1. Очень прискорбное сообщение об ошибке - оно, скорее всего, появится, когда вы переместили файлы «правильным» способом в соответствии с вашим поставщиком SCC. (например, с помощью 'tf rename' для TFS) Перемещение проекта на диск без указания TFS или забывание обновить файл sln / csproj приведет к различным сообщениям об ошибках в моем опыте. Файлы SUO непрозрачны, поэтому вы можете почесать голову, пока не сделаете tfpt treelean / scorch.
Ричард Берг
8
Это спасет мой день;)
Камил Лах
44
Не забудьте перезапустить Visual Studio после удаления файла
.suo
8
Ой. Теперь файл .suo скрыт. Зачем? О, я знаю почему. Мы разработчики и, очевидно, не способны справиться с дополнительной сложностью, увидев файл .suo в открытом доступе ;-)
Торбен Рахбек Кох
29
Это также работает в Visual Studio 2015, хотя путь к файлу .suo был изменен на <SolutionFolder> \. Vs \ <SolutionName> \ v14 \ .suo.
Грег М.
38

Я только столкнулся с этой проблемой, используя VS 2013 после переименования проекта. Ответ Стэнли привел меня к решению:

Закрыть VS - удалить файл .suo - снова запустить VS.

AndreasV
источник
1
Я могу ошибаться, но я не думаю, что даже видел файл .SUO, пока не закрыл VisualStudio.
Майкл Р
5
Просто хочу добавить - обязательно, чтобы вы закрыли VS перед удалением. Удаление файла, пока VS еще открыт, затем закрытие и повторное открытие не имеет никакого эффекта. Должен закрыться первым!
Wizloc
23

Удалите файл .suo особым образом.

  1. Не открывайте решение при удалении скрытого файла .suo.
  2. Перезапустите VisualStudio.
  3. Откройте решение и добавьте проект без сообщения об ошибке.
Михаэль Лу
источник
У меня .vs
сработало
11

TFS работает, как и большинство пакетов управления исходным кодом: он запоминает то, что он поместил на ваш компьютер, поэтому, когда вы получаете «Get Latest», ему нужно только получить изменения с момента вашего последнего «Get» вместо того, чтобы получать абсолютно все.

Это имеет одно предостережение: если вы удалите или переименуете локальные файлы на вашем диске, TFS не будет знать, что вы сделали это, и все равно будет думать, что они там, где он их оставил.

Если вы затем «Get Latest», он не потрудится обновить отсутствующие файлы.

Тогда вы, вероятно, получите все виды ошибок «отсутствующих файлов» от TFS и любых других инструментов, которые ищут файлы.

Чтобы обойти это, вам необходимо:

  • Если вы считаете, что у вас могут быть какие-то изменения, которые вы не хотите потерять, скопируйте исходную папку на свой компьютер в качестве резервной копии на всякий случай!
  • Щелкните правой кнопкой мыши проект (в Solution Explorer) или папку (в Source Control)
  • Выберите «Получить конкретную версию» из контекстного меню
  • Выберите, чтобы получить «Последнюю версию», и отметьте опцию, которая говорит (что-то вроде) «принудительно получать файлы, уже находящиеся в вашем рабочем пространстве», что говорит TFS забыть о том, что он «знает», и в любом случае снова получить все файлы.

Если у вас есть локально измененные (доступные для записи) файлы, будьте осторожны. Есть второй вариант, который перезапишет их, потеряв ваши изменения. Но у вас есть резервная копия, поэтому вы должны быть в безопасности. Как правило, этот параметр также лучше ставить, чтобы убедиться, что весь ваш исходный код полностью обновлен. (Но, очевидно, только если вы не против потерять локальные изменения!)

Когда вы в порядке, все файлы проекта будут принудительно перенесены на ваш локальный диск и должны устранить проблему.

Джейсон Уильямс
источник
я сделал «получить конкретную версию» и проверил «перезаписать все файлы, даже если локальный сервер соответствий». ошибок нет, но ничего не пришло. Я проверил с другого компьютера, и проект находится в TFS, и другой человек может нормально работать на нем.
синус
Кстати, моя локальная исходная папка полностью пуста. В этом нет ничего. Первоначально я удалил все файлы, чтобы получить все новые. как открытие нового проекта.
синус
1
В этом случае следующая вещь, которую я бы проверил, - это отображение вашего рабочего пространства. В Team Explorer дважды щелкните значок Source Control, и в верхней части окна появится раскрывающееся поле со списком. Оставьте это и выберите «Добавить / редактировать рабочие пространства». Отредактируйте свое рабочее пространство и убедитесь, что проект TFS, содержащий ваш код, имеет соответствующую папку на локальном жестком диске. И убедитесь, что вы смотрите на эту папку, когда пытаетесь загрузить решение. (Подсказка: сравните ваши настройки с настройками других разработчиков, которые пытаются выяснить источник проблемы)
Джейсон Уильямс,
9

Хотя это хорошо известный дефект VS, мы определенно справимся с этим!

  • Откройте файл решения в режиме редактирования.

  • Измените относительный путь, чтобы он соответствовал измененному / перемещенному физическому пути.

    SccProjectUniqueName1 = Source\\Order\\Order.csproj
    SccProjectName1 = Order.ApplicationService
    SccLocalPath1 = Order.ApplicationService
    
  • Кроме того, убедитесь, что правильный относительный путь для ссылающихся проектов

    Project("{asdasd-301F-11D3-BF4B-asdasd}") = "Order",
            "Source\Order\Order.csproj", "{E25641BC-C990-40E2-8876-08AE8728F763}"
    EndProject
    
Sandeep Talabathula
источник
6

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

Река лилит
источник
Я пытался открыть файл .vbproj, и это то, что я получаю. «Выбранный файл не может быть открыт как решение или проект. Пожалуйста, выберите файл решения или файл проекта», также, пожалуйста, укажите, как воссоздать файл .sln. Я новичок в этом. спасибо
sineas
Спасибо! Открыл файлы csproj, при выходе он попросил создать / сохранить новый файл .sln и перезаписать старый!
Рафаэль
5

Самый простой вариант, разработанный для меня:

  1. Щелкните правой кнопкой мыши проект и удалите «не загруженный» или «недоступный» проект
  2. Щелкните правой кнопкой мыши решение и добавьте «Существующий проект».
Арун Винот
источник
Я пробовал это, но все еще та же самая ошибка, не могу терпеть эту глупую ошибку (действительно ошибка, я не могу принять эту неприятную ошибку, чрезвычайно запутывающую).
Безнадежно
1
Просто и прямо ... понял.
Сарат Мохандас
3

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

  1. В Team Explorer «Управление рабочими пространствами ...»

    введите описание изображения здесь

  2. Нажмите «Редактировать ...»

    введите описание изображения здесь

  3. Исправьте значение в «Локальная папка»

    введите описание изображения здесь

  4. Наконец, удалите затронутые файлы .suo в соответствии с принятым ответом.

Крис Шиффхауэр
источник
2

Я нашел, что проще всего создать новый файл решения sln.

Дэвид
источник
1

Очистите ваши отображения рабочего пространства (Файл -> Контроль исходного кода -> Рабочие пространства). Отредактируйте рабочую область и либо удалите все сопоставления (дополнительные последствия), либо найдите тот, который связан с этим путем к серверу. Затем откройте Source Control Explorer и переназначьте. Дважды щелкните SLN в Source Control Explorer, и он должен получить последнюю версию. Не совсем уверен, что произошло или в какое состояние вам удалось попасть, но с этим вы должны снова начать двигаться.

Райан Кромвель
источник
1

Я столкнулся с этой проблемой и смог ее решить, получив .rptprojфайлы от коллеги и скопировав их в мой локальный каталог. Затем проект был в состоянии перезагрузить.

Сейвард
источник
1

Я потратил много времени на попытки решить эту проблему. Я сделал эти шаги: переименовать проект, переименовать пространства имен, переименовать папку проекта, редактировать файл .sln, редактировать скрытый файл .suo. Проект загружен, но он был неузнаваем для TFS! Наконец я нашел это руководство .

Если вы используете Resharper и TFVC является вашим контролем версий, выполните следующие действия:

  • Щелкните правой кнопкой мыши проект в обозревателе решений, выберите «Переименовать» и введите новое имя.

  • Снова щелкните правой кнопкой мыши по проекту и выберите «Свойства». Измените «Имя сборки» и «Пространство имен по умолчанию» на вкладке «Приложение».

  • Снова щелкните правой кнопкой мыши по проекту и выберите «Refactor» -> «Настроить пространства имен». Принять изменения.

  • Измените AssemblyTitle и AssemblyProduct в Свойствах / AssemblyInfo.cs

  • Удалить каталоги bin и obj в проводнике Windows

  • Откройте Source Control Explorer и переименуйте каталог проекта. Это закроет решение. Пусть это будет закрыто.

  • Откройте файл SLN (с помощью текстового редактора, такого как Notepad ++) и измените путь к проекту (должно быть несколько мест).

  • Откройте решение снова. Очистить и восстановить проект.

ABS
источник
0

Щелкните правой кнопкой мыши на недоступном проекте и отредактируйте файл проекта ... скорее всего, вы найдете путь к файлу в жестком коде или виртуальный, который не совпадает с тем, куда вы выбрали проект.

Kindness,

Дэн

Даниэль Эллиотт
источник
2
не имеют опции редактирования. его единственный проект перезагрузки, вырезать и удалить.
синус
0

Решение для этого

  1. Снова переименуйте папку проекта
  2. Установить конкретную версию и заставить получить в TFS
  3. удалить опцию «только для чтения и скрытый» в последней папке (не переименовывать)
  4. Теперь вы можете открыть проект без проблем
Саман Джаятилаке
источник
0

Иногда, даже если вы изменили .slnи .csprojпуть, и вручную переименовать, вы можете забыть проверить имя папки, содержащей проект.

SMPH
источник