Почему мое родное приложение 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".

Ошибка: не удалось создать контекст активации.

Завершение Формирования Контекста Активации.


777   3  

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, если возможный.

  1. запустите установщик Visual Studio 2008. ISO можно загрузить с помощью загрузок подписчиков MSDN.
  2. в диалоговом окне установки Visual Studio 2008 выберите установить Visual Studio 2008
  3. появится диалоговое окно "Microsoft Visual Studio 2008". Нажмите Кнопку Далее
  4. "Начальная страница" - примите условия лицензии, нажмите кнопку Далее
  5. "Страница параметров" - выберите пользовательский, нажмите кнопку Далее
  6. "Страница опций" - снимите все флажки. Перейдите к: Microsoft Visual Studio 2008 Professional - > Языковые Средства - > Visual C++ - > Visual C++ Tools. Проверьте "библиотеки времени выполнения Visual C++" (и все остальное ниже проверяется). Нажмите Кнопку Установить
  7. -- > установка продолжается.
  8. появится надпись "Finish Page". нажать кнопку Finish.
  9. снова появится диалоговое окно"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

    Ничего не найдено.