Начиная с нашего переключения с Visual Studio 6 на Visual Studio 2008, мы использовали файлы MFC90.dll и msvc [pr] 90.dll вместе с файлами манифеста в частной бок о бок конфигурации, чтобы не беспокоиться о версиях или устанавливать их в систему.
Pre-SP1, это отлично работает (и все еще отлично работает на наших машинах разработчика). Теперь, когда мы провели несколько тестов после SP1, я вытаскиваю свои волосы со вчерашнего дня.
Вначале наш установщик NSIS script извлекает файлы DLL и файлы манифеста из папки redist. Они перестали быть правильными, поскольку приложение все еще ссылается на версию RTM.
Итак, я добавил определение для _BIND_TO_CURRENT_VCLIBS_VERSION=1
ко всем нашим проектам, чтобы они использовали DLL SP1 в папке redist (или последующих, когда появлялись новые пакеты обновлений). Мне потребовалось несколько часов, чтобы найти это.
Я дважды проверял сгенерированные файлы манифеста в папке промежуточных файлов из компиляции, и они правильно перечисляют версии 9.0.30729.1 SP1. Я проверяю double и triple на чистой машине: все ссылки на локальные библиотеки DLL без ошибок.
Запуск приложения по-прежнему вызывает следующую ошибку:
Приложению не удалось правильно инициализировать (0xc0150002). Нажмите ОК, чтобы завершить приложение.
Ни один из поисков, которые я сделал в Google или Microsoft, не придумал ничего, что связано с моими конкретными проблемами (но с этим сообщением об ошибках возвращается к 2005 году).
У кого-нибудь была проблема с SP1?
Параметры:
- Найдите проблему и исправьте ее так, как она должна (желательно)
- Установить переиздание
- извлеките старые библиотеки RTM и файлы манифеста и удалите #define, чтобы использовать текущие. (Я получил их в более ранней сборке установщика, так как Microsoft вырывает их из вашей папки-переименования!)
Изменить: Я пробовал перестроить с отключенным определением (ссылка на DLL файлы RTM), и это работает до тех пор, пока в папке установлены DLL файлы RTM. Если сбрасываются пакеты SP1, он получает следующую ошибку:
c:\Program Files \... \...\X.exe
Это приложение не удалось запустить, поскольку неправильная конфигурация приложения. Повторная установка приложения может решить эту проблему.
Разве никто не должен был разбираться с этой проблемой?
Изменить: Только для усмешек я загрузил и запустил vcredist_x86.exe для VS2008SP1 на моем тестовом компьютере. It работает. С SP1 DLL. И мое приложение, связанное с RTM. Но NOT в частном бок о бок дистрибутиве, который работал до SP1.