Зачем VS2005 продолжать проверять проект для редактирования без каких-либо изменений? - PullRequest
3 голосов
/ 19 сентября 2008

У меня есть решение VS2005, которое содержит различные проекты (библиотеки DLL C ++, статические библиотеки C ++, сборки C #, исполняемые файлы Windows C ++), которые по-разному комбинируются для создания нескольких исполняемых файлов. Почему-то каждый раз, когда я открываю решение, VS2005 хочет проверить один из проектов для редактирования. Проект никак не изменяется, он просто проверен. Если я настрою VS2005 для запроса перед проверкой, я могу отменить автоматическую проверку во время загрузки без какого-либо вредного воздействия, которое я вижу. Это может быть или не быть актуальным, но проект, который он продолжает проверять, это cppunit version 1.12.0 (статическая версия lib). Как я могу остановить это раздражающее поведение?

Другие потенциально важные (или нет) детали:

  • Источником управления является Team Foundation Server (не Visual SourceSafe)
  • нет файлов .suo или .ncb отмечены в
  • извлекаются файлы .vcproj и .vspscc
  • Когда я закрываю решение или закрываю Visual Studio, меня спрашивают, хочу ли я сохранить изменения в проекте. Ответ «да» не приводит к изменению файла (Kdiff3 сравнивает мой локальный файл с версией сервера и сообщает, что «файлы имеют двоичный формат»)
  • Попытка регистрации «измененных» файлов приводит к появлению сообщения Visual Studio, в котором говорится «Нет изменений для регистрации. Все изменения были либо неизмененными файлами, либо блокировками. Изменения были отменены сервером»

Ответы [ 8 ]

1 голос
/ 19 сентября 2008

Как намекали Чарльз и Грэм, Visual Studio постоянно вносит изменения в пользовательские файлы опций и тому подобное, даже если вы не вносите изменения в проект напрямую.

Я не уверен, какая информация хранится, но я знаю, что это происходит. Обычные средства защиты - не включать файлы * .suo. Я также не храню ничего в папках bin или obj в соусе управления, поскольку это может иметь эффект, аналогичный тому, о котором вы говорили (если вы строите). (Проверяет проект при сборке. Мысль, что для этого нужно принять меры).

В целом это неизбежно. Так работает VS2005, 2008.

Это отвечает на ваш вопрос?

С уважением, Frank

0 голосов
/ 01 мая 2009

Есть две причины, с которыми я столкнулся, которые вызывают такое поведение.

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

  • SccProjectName = "$ / Команда / Платформа / Проекты / MyProject"
  • SccAuxPath = "http://teamFoundationServer.example.com:8080"
  • SccLocalPath = ""
  • SccProvider = "{88888888-4444-4444-4444-BBBBBBBBBBBB}" * * +1012

к этому:

  • SccProjectName = "САК"
  • SccAuxPath = "САК"
  • SccLocalPath = "SAK"
  • SccProvider = "САК"

Различные типы проектов определяются по-разному. Приведенный выше пример взят из .vcproj, C # проекты находятся в XML, VB выглядит как-то иначе, но значения те же. Просто установите для всех четырех значений постоянную строку «SAK», и Visual Studio автоматически обработает управление исходным кодом. Подробнее см. блог Алины Константина .

Я еще не обнаружил корень другой причины, но проект, который доставляет мне проблемы, также является CppUnit 1.12.0! Я буду копать и публиковать свои выводы.

John

0 голосов
/ 19 сентября 2008

Очень часто такое поведение вызвано тем, что VS пытается обновить привязки управления исходным кодом.

Graeme правильный, VS не будет сохранять файлы проекта или решения, пока вы не закроете VS.

Я бы позволил VS проверить файлы, затем закрыть VS, а затем проверить их.

0 голосов
/ 19 сентября 2008

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

Если вы заходите и регистрируете проект, проверяет ли он себя снова при следующей загрузке? Или проверка на некоторое время устраняет проблему?

0 голосов
/ 19 сентября 2008

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

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

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

0 голосов
/ 19 сентября 2008

Просто для пояснения, я предполагаю, что вы имеете в виду Visual SourceSafe2005, а не Visual Studio. (К вашему сведению, Visual SourceSafe обычно сокращается до VSS.)

Я уже сталкивался с этой проблемой в VSS. Я думаю, что ограничение действительно фундаментально для Visual SourceSafe: оно не так уж хорошо для продукта, и я бы перешел к чему-то другому, если это решение, на которое вы можете повлиять.

Если вы можете перейти к чему-то другому, я рекомендую Subversion для небольшого или среднего проекта. Это бесплатно и не использует механизм пессимистической блокировки, который Visual SourceSafe использует по умолчанию. Существует отличное дополнение Visual Studio под названием VisualSVN, которое предоставит вам те же функциональные возможности в среде IDE (просмотр файлов и т. Д.), Которые вы получаете из коробки с VSS.

Если вы не можете изменить системы контроля версий, я считаю, что в Visual SourceSafe есть режим, называемый «неэксклюзивные проверки», или что-то подобное, использующее оптимистическую блокировку, которую используют Subversion и другие системы контроля версий. Попробуйте установить эту опцию хотя бы для файлов, которые явно не меняются, и посмотрите, решит ли это проблему.

0 голосов
/ 19 сентября 2008

Вы пытались закрыть VS2005 после того, как он проверил cppunit, а затем посмотреть, были ли внесены какие-либо изменения?

Я часто сталкивался с чем-то подобным в решениях для веб-приложений, где файл проекта фактически не сохранялся, пока вы не закрыли студию и не открыли ее снова.

0 голосов
/ 19 сентября 2008

Возможно, вы поместили файл .suo или .ncb в систему контроля версий?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...