Как: изменить статус проекта с `Invalid` на`Valid`?

Что касается контроля исходного кода Team Foundation Server (TFS)... как изменить статус проекта с Invalid в Valid?

Фон

Мы находимся в процессе реорганизации нескольких решений и проектов в TFS. В этом случае:

  1. Сначала была выполнена операция ветвления, чтобы переместить существующие решения + проекты в новое место в хранилище TFS.
  2. Иерархия проектов была беспорядочной, поэтому я использовал операцию перемещения TFS, чтобы переместить проекты в подходящее место.
    • Этот шаг был выполнен по ряду проектов. Для 99% из них привязка в порядке.
  3. Затем изменения были зафиксированы в TFS.

Разные подходы

Один

В Visual Studio...

  • Откройте решение с проблемой
  • Выберите решение в обозревателе решений
  • Выбрать файл-> Контроль источника-> Изменить контроль источника
  • Удалите все проекты, которые связаны, но не работают правильно.
  • Свяжите все проекты, которые сейчас не связаны.

Два

  1. Удалить весь исходный код с диска.
  2. ЗапуститеVisual Studio.
  3. Откройте окноSource Control Explorer
  4. Раскрывающееся рабочеепространство => Рабочие пространства => выберите MyWorkspace => Редактировать... => Дополнительно
    • все выглядит хорошо
  5. Убедитесь, что в TFS нет ожидающих изменений, связанных с проектами решения.
  6. Контроль источника => Получить последнюю
  7. Раскрыл решение (например MySolution.sln) в Блокноте ++
  8. Удалил весь раздел:
    • GlobalSection(TeamFoundationVersionControl) = preSolution
  9. Сохранен файл решения.
  10. Открыл файл проекта (например, MyProject.vcxproj) в Notepad++
  11. Удалил следующие элементы XML:
    • SccProjectName
    • SccAuxPath
    • SccLocalPath
    • SccProvider
  12. Сохраненный файл проекта.
  13. Visual Studio => Файл => Открыть => Решение
  14. Нажмите на MySolution в обозревателе решений
  15. Файл => Контроль источника => Дополнительно => Изменить контроль источника
    • В столбце состояния MySolution а также MyProject перечислены как Not Controlled
  16. Нажал MySolution и связать
  17. Нажал ок. Все идет нормально.
  18. Файл => Контроль источника => Дополнительно => Изменить контроль источника
    • В столбце состояния MyProject указан как Not Controlled
  19. Нажал MyProject и связать
    • В столбце состояния MyProject теперь помечен как Invalid
  20. Если я сейчас нажму кнопку ОК, появится следующая ошибка:
    • "Некоторые проекты были привязаны к расположениям серверов, которые могут быть неправильными. Расположение может быть неправильным либо потому, что оно не содержит большинство файлов проектов, либо потому, что эти файлы не находятся в правильном расположении относительно указанной папки сервера. Вы Вероятно, следует исправить все привязки в решении. Однако вы можете продолжить и связать эти проекты с указанными местоположениями, даже если некоторые могут быть неправильными. "
  21. Нажмите: исправить привязки сервера
    • Диалоговое окно исчезает.
  22. Нажмите: ОК
    • Предыдущая ошибка появляется снова.
  23. Нажмите: продолжить с этими привязками
    • Окно диалога исчезает, но я до сих пор не могу решить эту проблему:(

Среда

  • Visual Studio Premium 2013 (версия 12.0.21005.1 REL)
  • Windows 8.1 Корпоративная (64-разрядная)
  • Это решение содержит несколько других проектов (C++ & C#), и связывание в порядке.
  • Это решение не имеет определения сборки на данный момент.

Дополнительное Чтение

2 ответа

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

После добавления этих файлов вручную статус изменился на "Действительный", и привязка теперь работает.

Я нашел два решения:

  1. Отключите, выгрузите проект и перезагрузите. Приходит из-за недействительной привязки.

  2. Удалите файлы, которых нет в системе контроля версий. Происходит от решения проблемы "Некоторые проекты были привязаны к расположению сервера, что может быть неправильным". в Visual Studio 2010 при использовании Team Foundation System 2010: когда некоторый процент элементов решения не может быть найден локально и не находится в системе управления версиями, Visual Studio отмечает привязку решения к системе управления версиями как "недействительную".

В моем случае это связано с тем, что сборка Angular генерирует много файлов, которые я использую.tfignore, чтобы предотвратить их регистрацию. Visual Studio 2019 обнаружила, что "он не содержит большинства файлов проектов" и пометила этот проект как "Недействительный". После удаления этих файлов он автоматически становится "Действительным". Таким образом, состояние "Недействительное" - это просто вводящее в заблуждение / бесполезное предупреждение. Вы можете просто проигнорировать это предупреждение, поскольку на самом деле нет ничего "недействительного".

Обычно я избегаю проверки кода, который [1] не компилируется и [2] не готов к производству (или, по крайней мере, не готов к QA).

В этом случае я решил игнорировать свое собственное правило, и теперь я заплатил цену:(

Решение

Хотя расположение проектов было правильно изменено с использованием TFS Move команда, несколько проектов C++ имели ссылки, указывающие на старые пути. В результате эти проекты имели обязательный статус Invalid:

  • Фильтр проекта включал файл, которого больше не было в старом месте.
    • MyProject => ThirdPartyLib фильтр => HeaderOfSomeLibraryFile.h
  • MyProject.vcxproj была неверная ссылка на проект.
    • MyProject => Properties => Common Properties => References

После того, как эти проблемы были исправлены, MyProject.vcxproj статус привязки автоматически переключается на Valid,

Другие вопросы по тегам