2014-10-20 4 views
3

У меня есть большой проект веб-приложений, включая код на C#, C++ и C, со многими ссылками (ссылки на проекты, ссылки на DLL), и я делаю сборку релиза. Тестирование моей программы на виртуальной машине, я получаю следующее сообщение об ошибке:Как я могу определить, что ссылается на Microsoft.VC90.DebugCRT?

Could not load file or assembly <MyAssembly.DLL> or one of its dependencies. 
The application has failed to start because its side-by-side configuration is incorrect. 
Please see the application event log or use the command-line sxstrace.exe tool for more detail. 

Так я проверить журнал событий, и я нахожу это:

Activation context generation failed for "C:\Windows\Microsoft.NET\Framework\...\MyAssembly.DLL". 
Dependent Assembly Microsoft.VC90.DebugCRT,processorArchitecture="x86", 
publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" 
could not be found. Please use sxstrace.exe for detailed diagnosis. 

Я также использовал sxstrace как было предложено, и просто в конечном итоге с файл, который гласит:

ERROR: Cannot resolve reference Microsoft.VC90.DebugCRT,processorArchitecture="x86", 
publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" 

Я проверил конфигурацию для своих проектов, и все они настроены на выпуск. Почему MyAssembly ссылается на Microsoft.VC90.DebugCRT? И как я могу это исправить?

Обратите внимание, что я установил на моей виртуальной машине x86 и x64 MSVC++ распространяемые ресурсы.

EDIT Я побежал зависимость ходок на MyAssembly.dll, и я получил кучу записей, которые говорят «Ошибка открытия файла Система не может найти указанный файл.»:

API-MS-WIN-... (4x) 
EXT-MS-WIN-... 
MSVCM90D.DLL 
MSVCR90.DLL 
MSVCR90D.DLL 
IESHIMS.DLL 
MFPLAT.DLL 
SETTINGSYNPOLICY.DLL 
WLANAPI.DLL 
+1

зависимый ходок? http://www.dependencywalker.com/ –

+0

У вас есть код C или C++, который был построен с VS2008 в конфигурации Debug. Это происходит, если вы действительно не знаете, откуда пришли ссылки .lib-файлов. Разумеется, мы этого не делаем. Вы можете посмотреть файлы .lib с шестнадцатеричным просмотром и найти строку, чтобы сузить ее. –

+0

@DmitriSosnik Я обновил вопрос с выходом зависит. – user145400

ответ

1

Как уже упоминалось в некоторых комментариях, решение заключается в использовании зависимостей.

Действительно, MyAssembly.dll строился с конфигурацией отладки, хотя я выбрал Release в Visual Studio. Причина заключалась в том, что я запускал событие post-build, которое вызывало msbuild в целевом WebPublish, но в нем явно не указывалось конфигурацию Release для этого, поэтому он решил использовать Debug.

 Смежные вопросы

  • Нет связанных вопросов^_^