Хорошо. Если вы открываете стороннюю библиотеку dll в VS 2008 (убедитесь, что она выбирает OpenWith> Resource Editor), она содержит собственный манифест?
Если это так, или даже если это не так, его также полезно получить DependencyWalker , чтобы увидеть, к какому точному времени выполнения dll пытается подключиться эта сторонняя библиотека.
Тот факт, что он работал с VS2005, а не с VS2008, подразумевает, что dll хочет использовать версии режима исполнения VS2005: msvcr80.dll
Вы упомянули msvc690.dll, которая мне не звонит: Visual Studio 6 использовала просто названный msvcrt.dll - первой версией Visual Studio, в которой использовалась версионная среда выполнения dll, была VS 2003 .NET или что-то подобное: msvcrt7.dll
В любом случае, если сторонняя библиотека не содержит своего собственного ресурса манифеста, то проще всего будет добавить ссылки на зависимые сборки в манифест приложения.
Есть несколько способов сделать это - вы можете создать манифест манифеста в виде XML-файла и добавить его в свои приложения "Свойства конфигурации> Инструмент манифеста> Ввод и вывод> Дополнительные файлы манифеста"
Я считаю, что наиболее удобный способ объединения дополнительных зависимых директив сборки в VS2008 - это использовать параметр командной строки linkers / manifestdependency.
Если вы добавите следующий фрагмент кода в файл в своем проекте, он даст компоновщику необходимую подсказку:
#define X_CRT_ASSEMBLY_VERSION "9.0.21022.8"
#pragma comment(linker,"/manifestdependency:\"type='win32' "\
"name='"Microsoft.VC80.CRT' "
"version='8.0.??.??' " \
"processorArchitecture='x86' " \
"publicKeyToken='????????'\"")
Они есть, потому что я не знаю номера версий или токена открытого ключа библиотек VS2005. если вы можете их найти и заполнить, все должно получиться.