2011-09-27 12 views
6

Tengo un proyecto de C++, configurado en /clr, al que hacen referencia los proyectos de C# en la misma solución. Desafortunadamente, parece que el C++ no se firma correctamente, lo que lleva al mensaje de error "el ensamblado no tiene un nombre fuerte". (sn.exe está de acuerdo con ese error.)
Sin embargo, no es un archivo de SNK en la configuración del proyecto (Linker/Avanzado), por lo que debe ser firmado. Además, todas las configuraciones del proyecto parecen ser las mismas que en otro proyecto de C++ en la misma solución, donde todo funciona.¿Por qué no está firmado mi ensamblaje en C++?

La única cosa que he encontrado después de desgarrarse mi pelo sobre esto durante horas:
Al eliminar el interruptor /NOLOGO para el enlazador, se hace evidente que el enlazador se llama dos veces . No tengo la menor idea de por qué podría ser eso.
Ahora, en el proyecto que trabaja el enlazador se pasa el archivo de SNK en la línea de comandos (/KEYFILE:) para ambos invocaciones, en el que hace no trabajo, la segunda invocación hace no obtener el archivo SNK pasado.

¿Por qué el enlazador se invocará dos veces? ¿Qué determina que no se pase el archivo snk en la segunda invocación?

Respuesta

9

Ok, encontré la solución: Aparentemente, MS explotó la versión SP1 para VS2010 y tiene que ir y perder el tiempo en la carpeta de instalación de MSBUild. Here es un artículo que proporciona los detalles sucios.

(Y por qué esto funcionaría en proyecto de un, pero no en el otro no tengo ni idea. Y, francamente, he perdido bastantes horas golpeando mi cabeza contra la pared ya esta, y no investigará más lejos .)

+2

Gracias por publicar esto. Me salvaste de horas de tirar del pelo. – dss539

+0

@ dss539: ¡Gracias por decirme! – sbi

Cuestiones relacionadas