Бинарная компиляция для VS2008 требует параллельной сборки DebugCRT, не работает в VS2010

Я работаю с VS2010 над проектом, в котором используется Havok, а последний выпуск имеет только VS2008 и более ранние двоичные файлы. Встроенный манифест, сгенерированный VS, содержит следующее


Поскольку очевидно, что VS больше не использует параллельные сборки ( source ), начиная с 2010 года, мой каталог winsxs не имеет установленные сборки debug crt, а распространяемый пакет vs не устанавливает отладочные версии. Если мы скомпилируем dll, использующие Havok, со встроенным манифестом, приложения, загружающие dll, не запустятся.

Я запустил sxstrace и получил следующее:

INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at G:\Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.DebugCRT.DLL.
INFO: Attempt to probe manifest at D:\Projects\GTS new\bld\Debug\Microsoft.VC90.DebugCRT.DLL.
INFO: Attempt to probe manifest at D:\Projects\GTS new\bld\Debug\Microsoft.VC90.DebugCRT.MANIFEST.
INFO: Attempt to probe manifest at D:\Projects\GTS new\bld\Debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.DLL.
INFO: Attempt to probe manifest at D:\Projects\GTS new\bld\Debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.MANIFEST.
INFO: Did not find manifest for culture Neutral.
INFO: End assembly probing.
ERROR: Cannot resolve reference Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8".
ERROR: Activation Context generation failed.
End Activation Context Generation.

Приложения работают на одной из машин моего коллеги, поскольку (предположительно) у него был установлен VS2008, но не на другом или моем, поскольку у нас был только VS2010 установлен. Единственными файлами debugcrt, которые рабочая машина имеет в каталоге winsxs, являются

x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb

как папка с dll, файлом .manifest и файлом .cat (тот же publicKeyToken, но другая версия)

Я пытался скопировать файлы в каталог winsxs, но это не помогло. Размещение DLL-файлов непосредственно в каталоге с двоичными файлами также ничего не сделал. Помещение файлов в bin\Microsoft.VC90.DebugCRT.DLL (поскольку это был один из каталогов, которые искали в соответствии с sxstrace) также не помогло, но вывод из sxstrace изменился на

INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at G:\Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.DebugCRT.DLL.
INFO: Attempt to probe manifest at D:\Projects\GTS new\bld\Debug\Microsoft.VC90.DebugCRT.DLL.
INFO: End assembly probing.
ERROR: Activation Context generation failed.

(он останавливает поиск и может разрешить ссылку, но генерация контекста все равно не удалась)

Единственное, что работает, - отключение генерации встроенного манифеста. Есть ли другой способ решить эту проблему?

10
задан abatishchev 3 August 2012 в 12:52
поделиться