Visual Studio распространяемая & бок о бок / DependentAssembly ошибка - PullRequest
4 голосов
/ 25 августа 2011

(я работаю под управлением Windows7 и использую Visual Studio 2010.)

Я использую ClamAV в проекте .NET Azure и сталкиваюсь с параллельными ошибками при каждом запуске clamd..exe, либо через мой код, либо самостоятельно запустив clamd.exe.

В Visual Studio 2010 я получаю сообщение об ошибке:

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

И в средстве просмотра событий я получаю:

Не удалось создать контекст активации для "C: \ Users \ pconerly \ код \ AntiVirus_source \ WorkerRole \ ClamAV \ clamd.exe».Не удалось найти зависимую сборку Microsoft.VC80.CRT, processorArchitecture = "x86", publicKeyToken = "1fc8b3b9a1e18e3b", type = "win32", version = "8.0.50727.6195".Пожалуйста, используйте sxstrace.exe для детальной диагностики.

Когда я искал "8.0.50727.6195", это привело меня к повторному просмотру 2005 года, поэтому я скачал его http://www.microsoft.com/download/en/details.aspx?id=3387

Послеперезагрузка Я все еще получаю параллельную ошибку.Кроме того, я думаю, что установщик Redist не завершает установку - как будто он видит Visual Studio 2010 и говорит: «О, это достаточно хорошо, мне не нужно устанавливать».Я не пытался удалить 2010 и использовать 2005, потому что остальная часть моей команды разработчиков использует VS 2010.

В чем дело?Как это можно исправить?Я готов вырвать мои волосы.

Ответы [ 3 ]

7 голосов
/ 03 февраля 2013

Ссылка, опубликованная Тиморсом, является обновлением для Visual Studio. Фактически распространяемый пакет такой:

http://www.microsoft.com/en-us/download/details.aspx?id=26347

4 голосов
/ 21 октября 2011
2 голосов
/ 01 августа 2012

Тимор прав: redist должен быть этот , который относится к этой записи в КБ Как вы можете видеть, msvcr80.dll обновлен до версии 8.0.50727.6195. Это « обновление безопасности » из « SP1 » среды выполнения C ++ 2005 года. Ваш exe, вероятно, требует (через внутренний манифест) эту конкретную версию.

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

У меня были похожие проблемы, когда моя система обновлялась (обновления Windows), и недавно скомпилированные EXE-файлы не работали со старой версией среды выполнения, размещенной в той же папке. Мне пришлось обновить msvcr80.dll и его манифест (который я нашел глубоко в \ windows \ winsxs), чтобы все работало.

Активация контекста - дело непростое, во всяком случае:)

HTH

...