Ошибки компилятора VC2008 открывают файлы sbr (C2418 C1903 C2471)

EDIT: см. мой ответ ниже для исправления.

ОРИГИНАЛЬНЫЙ ВОПРОС:

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

Я исправляю эти файлы SLN и Proj. При попытке выполнить сборку на внешнем USB-накопителе (я не пробовал его на основном жестком диске) я получаю нечетные ошибки (много их для разных файлов):

Неустранимая ошибка C1083: не удается открыть файл сгенерированного компилятором: '.\Debug \.sbr': Разрешение отказано

Эти файлы ссылаются в файле vcproj с относительными путями в двойных кавычках:

RelativePath = ".. \..\Source \.cpp"

Я получаю ту же самую ошибку в файле sln в среде IDE или я вызываю msbuild с помощью sln файла.

Файлы являются "разделяемыми" для нескольких sln файлов (проектов).

Человек, который изначально создавал файлы SLN, не известен как мастер при настройке MSDev или делает работу для команд.

Это проблема с тем, как ссылаются исходные файлы? Любые предложения по их устранению?

Этот URL, как представляется, не содержит полезной информации:

Неустранимая ошибка C1083 в MSDN

Примечание. В файле proj есть/все еще жестко заданные пути, но я не вижу их для этих файлов. Они были в основном для include и lib dirs. Думаю, я удалил их всех.

Я также получаю следующие ошибки:

.. \..\Source \.cpp: ошибка C2471: не может обновить базу данных программы '\ debug\vc90.pdb'

.. \..\Source \.cpp(336): фатальный ошибка C1903: невозможно восстановить предыдущая ошибка (ы); остановка сборник

.. \..\Source \.cpp(336): ошибка C2418: невозможно удалить файл браузера:. \Debug \.sbr

Ответы

Ответ 1

Заголовок: вы можете получить сообщение "PRJ0008" или "C2471" или "C1083" или "D8022" или "LNK1103" или подобное сообщение об ошибке при попытке создать решение в Visual С++

Симптомы:

  • D8022: Не удается открыть "RSP00000215921192.rsp"
  • PRJ0008: Не удалось удалить файл 'vc90.idb'.
  • C1083: Не удается открыть файл базы данных программы 'vc90.pdb'
  • C2471: невозможно обновить базу данных программы 'vc90.pdb'
  • LNK1103: отладка информации повреждена.

Причина:

Эта проблема возникает, когда выполняются все следующие условия:

  • У вас есть решение с несколькими проектами.
  • Два или более проектов не зависят друг от друга.
  • У вас есть параллельные сборки. (Инструменты → Параметры: проекты и решения, сборка и запуск: "максимальное количество параллельных проектов" установлено в значение больше 1)
  • Вы строите систему с несколькими процессорами (ядрами).
  • Два или более не зависящих от проекта проектов настроены на использование одного и того же промежуточного и/или выходного каталога.
  • Специфическое состояние гонки в mspdbsrv.exe остается не исправленным.

Разрешение:

Чтобы устранить проблему, выполните одно или несколько из следующих действий:

  • Переконфигурируйте не зависящие от проекта проекты, чтобы указать каталог промежуточного и выходного, который отличается друг от друга, например. Output Directory = "$ (SolutionDir) $(имя_проекта)\$(имя_контакта)", промежуточный каталог = "$ (OutDir)".
  • Отрегулируйте зависимости проекта (Project → Project Dependencies...), чтобы каждый из них зависел от другого.
  • Отключить параллельные сборки.
  • Добавьте параметр загрузки /onecpu в файл boot.ini.
  • Измените настройки BIOS, чтобы включить/использовать только один процессор.
  • Распечатайте отчет о проблемах с технической поддержкой Microsoft и продолжайте прослушивать дерьмо из них, пока они в конечном итоге не установят mspdbsrv.

Статус:

Проблема заключается в сочетании как ошибки конфигурации пользовательского проекта, так и состояния гонки в программе Microsoft mspdbsrv.exe, которая неправильно обрабатывает более одного потока, одновременно вызывающего его для одного и того же файла, в результате чего файл HANDLE остается открытым.

Кроме того, сама Visual Studio и/или ее система сборки (VCBUILD и/или MSBUILD) (или все три!) должны быть достаточно умными, чтобы обнаруживать и предупреждать пользователя о таких ошибках пользователя, чтобы можно было предпринять корректирующие действия.

Эта проблема существует для времени LOOOOOONG.

Относится к:

  • Microsoft Visual С++ 2005
  • Microsoft Visual С++ 2008
  • Другие?

С уважением:

"Рыба" (Дэвид Б. Форель)
[email protected]

p.s:

Добро пожаловать.:)

Ответ 2

Хммм.

Может быть:

http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/0ceac3c6-62f6-4fdf-82e1-d41e1b4fcd20/

есть исправление от MS

http://code.msdn.microsoft.com/KB946040

http://support.microsoft.com/kb/946040

Это может быть моей проблемой. Я думаю, что это может быть только на одной машине.

EDIT:

Я загрузил и запустил установщик исправлений. Кажется, это исправлено.

Ответ 3

Я получаю эту же ошибку, когда физически удаляю файл с диска, но оставляю его в VS. В VS2005 это дало бы намного лучше: фатальный файл ошибки не найден. Я думаю, что это ошибка в VS2008. Исправление, упомянутое выше, не помогло мне.

Ответ 4

В моем случае это был мой пакет вирусов (Trend Micro), вызывающий все проблемы. Я добавил свои папки Dev в списки Ignore/White, чтобы решить проблему.

Ответ 5

удалите папку отладки и создайте свой проект.

Ответ 6

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