Почему мое приложение C2010, встроенное в C2010, не запустится внезапно, выдав параллельную ошибку? - PullRequest
2 голосов
/ 12 июня 2011

Мне пришлось переустанавливать свою систему (Win7) после обновления оборудования. Перед обновлением я также запускал Win7 и VS2010, и мое приложение работало без проблем как в версии выпуска, так и в версии отладки. Теперь я компилирую и связываю его, но когда я пытаюсь запустить его, я получаю:

Не удалось запустить приложение, поскольку его параллельная конфигурация неверна. Пожалуйста, смотрите журнал событий приложения или используйте инструмент командной строки sxstrace.exe для более подробной информации.

Журнал событий показывает:

Зависимая сборка Microsoft.VC90.DebugCRT, processorArchitecture = "x86", publicKeyToken = "1fc8b3b9a1e18e3b", type = "win32", версия = "9.0.21022.8" не найдена. Пожалуйста, используйте sxstrace.exe для подробной диагностики.

для конкретного исполняемого файла. Что странно для меня, так это то, что я вижу время выполнения VS2008 среди установленных программ в панели управления. Еще более странным является тот факт, что он работал неделю назад на моей старой установке. У меня был VS2008 там, прежде чем я обновил до VS2010, так что, возможно, в этом причина. В любом случае, я также не понимаю, почему VS2010 не связывает мой двоичный файл с новейшими (VC10) библиотеками времени выполнения, вместо этого полагаясь на (несуществующие?) Библиотеки VC9.0. Что я могу сделать, чтобы запустить мое приложение?

РЕДАКТИРОВАТЬ: Я включаю вывод из sxstrace здесь. Было несколько ссылок на исполняемый файл, но большинство из них выглядят одинаково, и я выбрал 32-битный, поскольку приложение построено как 32-битное:

F: \ cci \ Debug> sxstrace Trace -logfile: trace.etl Трассировка началась. Трассировка будет сохранена в файл trace.etl. Нажмите Enter, чтобы остановить трассировку ...

F: \ cci \ Debug> sxstrace Parse -logfile: trace.etl -outfile: sxs.out Анализ файла журнала trace.etl ... Разбор закончен! Вывод сохранен в файл sxs.out.

Содержимое sxs.out:

Начать генерацию контекста активации.
Входной параметр:
Флаги = 0
ProcessorArchitecture = Wow32
CultureFallBacks = en-US; en
ManifestPath = F: \ cci \ Debug \ gui.exe
AssemblyDirectory = F: \ cci \ Debug \
Файл конфигурации приложения =
ИНФОРМАЦИЯ: Анализ файла манифеста F: \ cci \ Debug \ gui.exe.
ИНФОРМАЦИЯ: Манифест Определение Идентификация (ноль).
ИНФОРМАЦИЯ: Ссылка: Microsoft.VC90.DebugCRT, processorArchitecture = "x86", publicKeyToken = "1fc8b3b9a1e18e3b", type = "win32", версия = "9.0.21022.8"
ИНФОРМАЦИЯ: Устранение ссылки Microsoft.VC90.DebugCRT, processorArchitecture = "x86", publicKeyToken = "1fc8b3b9a1e18e3b", type = "win32", версия = "9.0.21022.8".
ИНФОРМАЦИЯ: Разрешение ссылки на ProcessorArchitecture WOW64.
ИНФОРМАЦИЯ: Разрешающая ссылка на культуру Нейтральный.
ИНФОРМАЦИЯ: Применение обязательной политики.
ИНФОРМАЦИЯ: Политика издателя не найдена.
ИНФОРМАЦИЯ: Перенаправление политики привязки не найдено.
ИНФОРМАЦИЯ: Начать сборку зонда.
ИНФОРМАЦИЯ: Не нашел сборки в WinSxS.
ИНФОРМАЦИЯ: Попытка проверить манифест в C: \ Windows \ assembly \ GAC_32 \ Microsoft.VC90.DebugCRT \ 9.0.21022.8__1fc8b3b9a1e18e3b \ Microsoft.VC90.DebugCRT.DLL.
ИНФОРМАЦИЯ: Не нашел манифест для культуры Нейтральный.
ИНФОРМАЦИЯ: Проверка конца сборки.
ИНФОРМАЦИЯ: Устранение ссылки на ProcessorArchitecture x86.
ИНФОРМАЦИЯ: Разрешающая ссылка на культуру Нейтральный.
ИНФОРМАЦИЯ: Применение обязательной политики.
ИНФОРМАЦИЯ: Политика издателя не найдена.
ИНФОРМАЦИЯ: Перенаправление политики привязки не найдено.
ИНФОРМАЦИЯ: Начать сборку зонда.
ИНФОРМАЦИЯ: Не нашел сборки в WinSxS.
ИНФОРМАЦИЯ: Попытка проверить манифест в C: \ Windows \ assembly \ GAC_32 \ Microsoft.VC90.DebugCRT \ 9.0.21022.8__1fc8b3b9a1e18e3b \ Microsoft.VC90.DebugCRT.DLL.
ИНФОРМАЦИЯ: Попытка проверить манифест в F: \ cci \ Debug \ Microsoft.VC90.DebugCRT.DLL.
ИНФОРМАЦИЯ: Попытка проверить манифест в F: \ cci \ Debug \ Microsoft.VC90.DebugCRT.MANIFEST.
ИНФОРМАЦИЯ: Попытка проверить манифест в F: \ cci \ Debug \ Microsoft.VC90.DebugCRT \ Microsoft.VC90.DebugCRT.DLL.
ИНФОРМАЦИЯ: Попытка проверить манифест в F: \ cci \ Debug \ Microsoft.VC90.DebugCRT \ Microsoft.VC90.DebugCRT.MANIFEST.
ИНФОРМАЦИЯ: Не нашел манифест для культуры Нейтральный.
ИНФОРМАЦИЯ: Проверка конца сборки.
ОШИБКА: невозможно разрешить ссылку Microsoft.VC90.DebugCRT, processorArchitecture = "x86", publicKeyToken = "1fc8b3b9a1e18e3b", type = "win32", версия = "9.0.21022.8".
ОШИБКА: сбой генерации контекста активации.
Завершение генерации контекста активации.

Ответы [ 3 ]

8 голосов
/ 12 июня 2011

«Время выполнения VS2008», которое отображается среди установленных программ на панели управления, не включает время выполнения отладки. Это распространяемая среда выполнения, поэтому она имеет только «релизную» версию среды выполнения. Но так как VS 2008 был установлен на вашем компьютере до переустановки, и именно поэтому он работал раньше - среда отладки включена в инструменты dev.

Некоторые варианты решения проблемы:

  • переустановите VS 2008 (я думаю, VC ++ Express 2008 будет достаточно, если у вас больше нет доступа к другому)
  • пересоберите программу с VS 2010 (или любой другой версией)

Если вы хотите, чтобы ваша программа использовалась людьми, у которых нет установленных инструментов (которые могут включать вас), вам следует рассмотреть возможность ее сборки в режиме выпуска и / или сборки со статически связанной средой выполнения.

2 голосов
/ 12 июня 2011

Microsoft.VC90. * Debug * CRT

Да, эта DLL не будет доступна на вашем компьютере, вы не установили VS2008. Вы также не можете получить его от Microsoft, это нераспространяемый файл.

Не беспокойтесь о том, почему ваш проект VS2010 зависит от версии CRT VS2008, это довольно вредно. И довольно неприятная головная боль при развертывании, достаточная причина, чтобы это исправить.

За исключением установки VS2008, вы можете создать проект установки и развертывания на другом компьютере с установленным VS2008, чтобы получить отладочные библиотеки DLL на вашем новом компьютере. Проект + Свойства + Предварительные условия, снимите флажок .NET Framework. Project + Add + Merge Module для добавления отладочных модулей слияния для DLL и файлов политик из c: \ program files \ common files \ merge modules.

0 голосов
/ 16 января 2014

У меня был случай, когда COM DLL создавалась (только для целей разработки) в среде VS 2008, когда другие компоненты в проекте использовали более новую версию Visual Studio. Этот набор инструкций подробно описывает, как установить только файлы времени выполнения VS 2008 VC ++ с помощью установщика Visual Studio 2008 без установки дополнительного ненужного программного обеспечения. Рекомендуется выполнить эти шаги перед установкой Visual Studio 2010 или любой последующей версии VS, если это возможно.

  1. Запустите установщик Visual Studio 2008. ISO можно загрузить с помощью MSDN Subscriber Downloads.
  2. В диалоговом окне установки Visual Studio 2008 выберите Установить Visual Studio 2008
  3. Откроется диалоговое окно «Microsoft Visual Studio 2008». Нажмите Далее
  4. «Стартовая страница» - примите условия лицензии, нажмите Далее
  5. «Страница параметров» - выберите «Пользовательский», нажмите «Далее»
  6. «Страница опций» - отмените выбор ВСЕ. Перейдите к: Microsoft Visual Studio 2008 Professional -> Языковые инструменты -> Visual C ++ -> Инструменты Visual C ++. Проверьте «библиотеки времени выполнения Visual C ++» (и все остальное ниже проверено). Нажмите Установить
  7. -> Установка продолжается.
  8. Появляется «Готовая страница». Нажмите Готово.
  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 Инструменты
    • Microsoft SQL Server Compact 3.5 ENU
    • Средства разработки Microsoft SQL Server Compact 3.5 ENU
    • Удаленный отладчик Microsoft Visual Studio 2008
    • Индикатор удаленного отладчика Microsoft Visual Studio 2008 (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 для Win32
    • Microsoft Windows SDK для Visual Studio 2008 SP1 Express Tools для .NET Framework - ru

После удаления этих продуктов должны остаться только два продукта (из установки VS 2008):

  • Распространяемый Microsoft Visual C ++ 2008 - x86 9.0.30729
  • Microsoft Visual Studio 2008 Professional Edition - ENU
...