После перехода с Visual Studio 6 на Visual Studio 2008 мы использовали файлы MFC90.dll и msvc [pr] 90.dll вместе с файлами манифеста в частной параллельной конфигурации, чтобы не беспокоиться о версиях. или установив их в систему.
До SP1 это работало нормально (и все еще отлично работает на наших машинах для разработчиков). Теперь, когда мы провели некоторое тестирование после SP1, я выдергивал волосы со вчерашнего утра.
Во-первых, наш сценарий установки NSIS извлекает библиотеки DLL и файлы манифеста из папки redist. Это больше не было правильным, поскольку приложение все еще ссылается на версию RTM.
Поэтому я добавил определение _BIND_TO_CURRENT_VCLIBS_VERSION=1
во все наши проекты, чтобы они использовали библиотеки DLL SP1 в папке redist (или последующих, по мере выхода новых пакетов обновления). На это у меня ушло несколько часов.
Я дважды проверил сгенерированные файлы манифеста в папке промежуточных файлов из компиляции, и они правильно перечисляют версии 9.0.30729.1 SP1. Я дважды и трижды проверял, зависит от чистой машины: все ссылки на локальные библиотеки без ошибок.
При запуске приложения по-прежнему возникает следующая ошибка:
Не удалось правильно инициализировать приложение (0xc0150002). Нажмите ОК, чтобы закрыть приложение.
Ни один из поисков, которые я выполнял в Google или Microsoft, не дал ничего, что связано с моими конкретными проблемами (но есть обращения к 2005 году с этим сообщением об ошибке).
У кого-нибудь была подобная проблема с SP1?
Options:
- Find the problem and fix it so it works as it should (preferred)
- Install the redist
- dig out the old RTM dlls and manifest files and remove the #define to use the current ones. (I've got them in an earlier installer build, since Microsoft blasts them out of your redist folder!)
Изменить: Я пробовал перестроить с отключенным определением (ссылка на библиотеки DLL RTM), и это работает, пока библиотеки DLL RTM установлены в папке. Если загружаются dll с пакетом обновления 1 (SP1), возникает следующая ошибка:
c: \ Program Files \ ... \ ... \ X.exe
Это приложение не удалось запустить из-за неправильной конфигурации приложения. Переустановка приложения может решить проблему.
Никому другому не приходилось заниматься этой проблемой?
Изменить: Я скачал и запустил vcredist_x86.exe для VS2008SP1 на своей тестовой машине. Это работает. С библиотеками DLL SP1. И мое приложение, связанное с RTM. Но НЕ в частном параллельном распределении, которое работало до SP1.