Почему мое родное приложение VS2010 на языке C++ не запускается внезапно, выдавая ошибку side-by-side?
Мне пришлось переустановить свою систему (Win7) после обновления оборудования. До обновления я также запускал Win7 и VS2010, и мое приложение работало без проблем как в релизной, так и в отладочной версиях. Теперь я компилирую и связываю его, но когда я пытаюсь запустить его, я получаю:
Приложение не удалось запустить, так как его боковая конфигурация неверна. Пожалуйста, просмотрите журнал событий приложения или используйте командную строку sxstrace.exe инструмент для более подробной информации.
Журнал событий показывает:
Зависимая сборка Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8 - не удалось найти. Пожалуйста, используйте sxstrace.exe для детальной диагностики.
Для конкретного исполняемого файла. Что странно для меня, так это то, что я вижу VS2008 runtime среди установленных программ в панели управления. Еще более странным является тот факт, что он работал неделю назад на моей старой установке. У меня был VS2008 там, прежде чем я обновлен до VS2010, так что, возможно, это причина. В любом случае, я также не понимаю, почему VS2010 не связывает мой двоичный файл с новейшими библиотеками времени выполнения (VC10), вместо этого полагаясь на (несуществующие?) VC9.0 из них. Что я могу сделать, чтобы запустить приложение?
EDIT: я включаю сюда выходные данные из sxstrace. Было несколько ссылок на исполняемый файл, но они в основном выглядят одинаково, и я выбрал 32-битный, так как приложение построено как 32-битный:
F:cciDebug>Sxstrace Trace-logfile: трассировка.технология ETL
Началось отслеживание. Трассировка будет сохранена в файл трассировки.технология ETL.
Нажмите Enter, чтобы остановить трассировку...
F:cciDebug>Sxstrace Parse-logfile: трассировка.etl-outfile: sxs.из
Анализ трассировки файла журнала.технология ETL...
Разбор закончен! Вывод сохранен в файл sxs.из.
Содержание наличии.выход:
Начать Генерацию Контекста Активации.
Входной Параметр:
Флаги = 0
Параметр processorarchitecture = Wow32
CultureFallBacks = en-US; en
ManifestPath = F:cciDebuggui.exe
AssemblyDirectory = F:cciDebug
Файл Конфигурации Приложения =
Информация: анализ файла манифеста F:cciDebuggui.exe.
Информация: идентификатор определения Манифеста равен (null).
Информация: справка: Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"
Информация: разрешение ссылки Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8".
Информация: разрешающая ссылка для ProcessorArchitecture WOW64.
Информация: разрешение ссылки на нейтральную культуру.
Информация: применение политики привязки.
Информация: политика издателя не найдена.
Информация: перенаправление политики привязки не найдено.
Информация: начните сборку зондирования.
Информация: не удалось найти сборку в WinSxS.
Информация: попытка проверить манифест на C:WindowsassemblyGAC_32Microsoft.VC90.DebugCRT9.0.21022.8__1fc8b3b9a1e18e3bMicrosoft.VC90.DebugCRT.DLL.
Информация: не нашел манифеста для нейтральной культуры.
Информация: прощупывание конца сборки.
Информация: разрешение ссылки на ProcessorArchitecture x86.
Информация: разрешение ссылки на нейтральную культуру.
ИНФОРМАЦИЯ: Применение Политики Привязки.
Информация: политика издателя не найдена.
Информация: перенаправление политики привязки не найдено.
Информация: начните сборку зондирования.
Информация: не удалось найти сборку в WinSxS.
Информация: попытка проверить манифест на C:WindowsassemblyGAC_32Microsoft.VC90.DebugCRT9.0.21022.8__1fc8b3b9a1e18e3bMicrosoft.VC90.DebugCRT.DLL.
Информация: попытка проверить манифест на F:cciDebugMicrosoft.VC90.DebugCRT.DLL.
Информация: попытка проверить манифест на F:cciDebugMicrosoft.VC90.DebugCRT.MANIFEST.
Информация: попытка проверить манифест на F:cciDebugMicrosoft.VC90.DebugCRTMicrosoft.VC90.DebugCRT.DLL.
Информация: попытка проверить манифест на F:cciDebugMicrosoft.VC90.DebugCRTMicrosoft.VC90.DebugCRT.MANIFEST.
Информация: не нашел манифеста для нейтральной культуры.
Информация: прощупывание конца сборки.
Ошибка: не удается разрешить ссылку Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8".
Ошибка: не удалось создать контекст активации.
Завершение Формирования Контекста Активации.
3 ответов:
"среда выполнения VS2008", которая отображается среди установленных программ в Панели управления, не включает среду выполнения отладки. Это распространяемая среда выполнения, поэтому она имеет только "релизную" версию среды выполнения. Но так как у вас был установлен VS 2008 на вашем компьютере до переустановки, и именно поэтому он работал раньше-среда выполнения отладки включена в состав средств разработки.
Некоторые варианты решения проблемы:
- переустановите VS 2008 (я думаю, что VC++ Express 2008 будет достаточно, если вы больше не имеют доступа к другому)
- перестроить программу с помощью VS 2010 (или любой другой версии, которую вы хотите)
Если вы хотите, чтобы вашу программу могли использовать люди, у которых не установлены инструменты (в том числе и вы), вы должны рассмотреть возможность ее сборки в режиме выпуска и/или сборки со статически связанной средой выполнения.
Microsoft. VC90. * Debug * CRT
Да, эта библиотека DLL не будет доступна на вашем компьютере, вы не устанавливали VS2008. Вы также не можете получить его от Microsoft, это не распространяемый файл.
Не беспокойтесь немного о том, почему ваш проект VS2010 имеет зависимость от версии VS2008 CRT, это довольно нездорово. И довольно неприятная головная боль от развертывания, достаточная причина, чтобы исправить это.
Коротко от установки VS2008, вы можете создать установку и Проект развертывания на другой машине, на которой установлен VS2008, чтобы получить отладочные библиотеки DLL на новой машине. Проект + свойства + предварительные условия, снимите флажок .NET framework. Модуль Project + Add + Merge для добавления модулей debug merge для библиотек DLL и файлов политик из c:\program файлы\общие файлы\модули слияния.
У меня был случай, когда библиотека DLL COM создавалась (только для целей разработки) в среде VS 2008, когда другие компоненты в проекте использовали более новую версию Visual Studio. В этом наборе инструкций подробно описано, как установить только файлы VS 2008 VC++ runtime с помощью установщика Visual Studio 2008, без установки дополнительного ненужного программного обеспечения. Рекомендуется выполнить следующие действия перед установкой Visual Studio 2010 или любой последующей версии VS, если возможный.
- запустите установщик Visual Studio 2008. ISO можно загрузить с помощью загрузок подписчиков MSDN.
- в диалоговом окне установки Visual Studio 2008 выберите установить Visual Studio 2008
- появится диалоговое окно "Microsoft Visual Studio 2008". Нажмите Кнопку Далее
- "Начальная страница" - примите условия лицензии, нажмите кнопку Далее
- "Страница параметров" - выберите пользовательский, нажмите кнопку Далее
- "Страница опций" - снимите все флажки. Перейдите к: Microsoft Visual Studio 2008 Professional - > Языковые Средства - > Visual C++ - > Visual C++ Tools. Проверьте "библиотеки времени выполнения Visual C++" (и все остальное ниже проверяется). Нажмите Кнопку Установить
- -- > установка продолжается.
- появится надпись "Finish Page". нажать кнопку Finish.
- снова появится диалоговое окно"Microsoft Visual Studio 2008". Нажмите Кнопку Выход После установки удалите вещи, которые были установлены без возможности не устанавливать их. В разделе Установка и удаление программ (программы и компоненты) удалите следующий:
- мастер публикации баз данных Microsoft SQL Server 1.2
- Компонент Веб-Разработки Microsoft Visual Studio
- Microsoft Document Explorer 2008
- Microsoft Windows SDK для Visual Studio 2008 .NET Framework Tools
- Microsoft SQL Server Compact 3.5 ENU
- Microsoft SQL Server Compact 3.5 Design Tools ENU
- Удаленный Отладчик Microsoft Visual Studio 2008
- Microsoft Visual Studio 2008 Remote Debugger Light (x64) - ENU
- Microsoft Windows SDK для Visual Studio 2008 Tools
- Microsoft Windows SDK для Visual Studio 2008 заголовки и библиотеки
- Microsoft Windows SDK для справочных сборок Visual Studio 2008 SDK и IntelliSense
- Предварительные Условия Microsoft Visual Studio 2008
- объекты управления Microsoft SQL Server 2008
- Microsoft Windows SDK для Visual Studio 2008 SP1 Express Tools for Win32
- Microsoft Windows SDK для Visual Studio 2008 SP1 Express Инструменты для .NET Framework-enu
После удаления этих продуктов должны остаться только два продукта (из установки VS 2008):
- Microsoft Visual C++ 2008 Redistributable-x86 9.0.30729
- Microsoft Visual Studio 2008 Professional Edition-ENU
Comments