Estoy trabajando con VS2010 en un proyecto que usa Havok, y la versión más reciente solo tiene VS2008 y binarios anteriores. El manifiesto incrustado generado por VS contiene la siguienteCompilación binaria para VS2008 necesita el ensamblado DebugCRT de dos puertas verticales, no funciona en VS2010
<assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
ya que al parecer ya no utiliza VS montajes de lado a lado (source) a partir de 2010, mi directorio winsxs no tiene la depuración instalan los conjuntos de CRT, y la vs paquete redistribuible no instala las versiones de depuración. Si compilamos los dlls que usan Havok con un manifiesto incrustado, las aplicaciones que cargan los dlls no se inician.
me corrieron sxstrace y tiene el siguiente:
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.
Las aplicaciones funcionan en una de las máquinas de mi compañero de trabajo, ya que (presumiblemente) que había instalado VS2008 en él, pero no en otro compañero de trabajo o en la mía, ya que solo se ha instalado VS2010. presenta la única debugcrt la máquina de trabajo en el directorio ha winsxs son
x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb
como una carpeta con los archivos DLL, un archivo manifest, y un archivo .cat (publicKeyToken mismo pero en versión diferente)
I' He intentado copiar los archivos en mi directorio de winsxs, lo que no solucionó el problema. Colocar los dlls directamente en el directorio con los binarios tampoco hizo nada. La colocación de los archivos en bin\Microsoft.VC90.DebugCRT.DLL
(ya que era uno de los directorios buscado acuerdo con sxstrace) tampoco logró ayudar, pero la salida de sxstrace cambió a
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.
(que deja de buscar, y es capaz de resolver la referencia, pero la generación de contexto sigue fallando)
Lo único que funciona es deshabilitar la generación de manifiesto incrustado. ¿Hay alguna otra forma de resolver esto?
¿VS genera manifiesto contra DebugCRT en modo Depuración y no en Versión? – abatishchev
También echa un vistazo a [MSDN] (http://msdn.microsoft.com/en-us/library/aa985618.aspx). – abatishchev