Visual Studio 2005 - C ++ - Что контролирует создание манифеста - PullRequest
0 голосов
/ 24 марта 2009

Я пытался выяснить, почему произошла ошибка отладочной сборки с ошибкой события "зависимая сборка microsoft.vc80.debugcrt".

После удаления всего (ничего, кроме .cpp или .h) и воссоздания решения - у меня все еще была проблема.

Поиск в Google был бесплодным, и переустановка VS не произвела никаких изменений.

У меня были библиотеки в C: \ WINDOWS \ WinSxS \ x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c.

Я открыл файл \ debug \ .exe.intermediate.manifest, и в нем было 2 записи (variableAssembly):
1-е: name = 'Microsoft.VC80.DebugCRT' version = '8.0.50608.0'
2-е: name = 'Microsoft.VC80.DebugCRT' версия = '8.0.50727.762'

Если я удалю одну и поменяю другую на name = 'Microsoft.VC80.DebugCRT' version = '8.0.50727.42'

Я могу получить сборку, которая начнется.

Конечно, у меня установлен VS2008 - но что контролирует версии? или Как я могу получить правильную версию DLL отладки, чтобы "придерживаться".

VS2008 был удален через панель управления.

РЕДАКТИРОВАТЬ: ничего не нашел в реестре, если поиск DebugCRT.
путь среды указывает на папки VS8.
В папке c: \ windows \ winsxs \ rules есть только 1 папка DebugCRT
(8.0.50.727.42)
Папка c: \ windows \ winsxs \ манифесты имеет только .42 версии .cat и .manifest
Файл .manifest (в указанной выше папке манифеста) имеет версию = "8.0.50727.42"

Уточнение: в файле манифеста есть 2 записи "variableAssembly", каждая из которых имеет разные версии, а не .42. Я могу удалить одну запись и изменить версию на другую, чтобы она соответствовала .42, чтобы начать отладочную сборку.

EDIT2: я также использую boost и внутри DLL есть версия .762

Ответы [ 3 ]

1 голос
/ 24 марта 2009

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

Итак, - проверьте библиотеки и библиотеки, импортированные в решение, для используемой версии.

0 голосов
/ 25 марта 2009

Я бы посоветовал восстановить Boost в вашей конкретной среде. Кроме того, вы можете полностью отказаться от сборки Side by Side, статически связав ЭЛТ ...

0 голосов
/ 24 марта 2009

VS 2008 - это VC90, а не VC80, так что это не является частью проблемы. Связь между запрошенной манифестом сборкой и загруженной SxS информацией находится в C: \ WINDOWS \ WinSxS \ Policies. IIRC, "8.0.50608.0" генерируется VS2005 pre-SP1. Это неправильно, и должно было быть 8.0.50727.42, но это отлавливается политикой.

Я не уверен, как вы получаете два манифеста. Каковы ваши настройки манифеста?

...