2011-02-25 14 views

Respuesta

11

¿Ha marcado el ensamblaje para la firma de retraso en AssemblyInfo.cpp?

[assembly:AssemblyKeyFileAttribute("MyKey.snk")]; 
[assembly:AssemblyDelaySignAttribute(true)]; 
+1

dónde viene esta van en un montaje de C++? – Justin

+3

ver [aquí] (http://stackoverflow.com/questions/158821/managed-c-assembly-attributes) – adrianm

+0

Tan malditamente molesto que esto fue/no está documentado. Pasé más de dos días tratando de descubrir por qué esto no funcionaría al cambiar a la configuración de 32 bits, pero no era obligatorio con 64 bits. – bbqchickenrobot

7

que pensé éste hacia fuera en el final - de acuerdo con la cuestión vinculada No puedo establecer la opción Linker/Advanced/KeyFile y esperar que funcione - Necesito usar sn.exe para firmar el ensamblado, sin embargo me también todavía necesita la opción Linker/Advanced/KeyFile para establecerse.

En definitiva para firmar un montaje/CLR que necesita para ambos:

  1. Especifique un archivo de claves en la página Linker/Advanced/KeyFile propiedades
  2. Uso sn.exe para firmar el ensamblado como un paso posterior a la generación

(creo que usar el [assembly:AssemblyKeyFileAttribute("MyKey.snk")] es equivalente a establecer el archivo de claves en el cuadro de diálogo de propiedades del proyecto).

+0

Debería funcionar, sin embargo, a veces no es así y tiene que usar atributos. – surfen

6

El marked answer ayudó a llegar a la solución final (por lo que recibe un +1 de mí).

Sin embargo, tuve que pasar varios minutos frustrantes para averiguar cómo crear un AssemblyInfo.cpp en VS2010.

A continuación, se encuentra la respuesta más completa del problema.

#include "stdafx.h" 

using namespace System; 
using namespace System::Reflection; 
using namespace System::Runtime::CompilerServices; 
using namespace System::Runtime::InteropServices; 
using namespace System::Security::Permissions; 

[assembly:AssemblyKeyFileAttribute("YourAssembly.snk")]; 
[assembly:AssemblyDelaySignAttribute(true)]; 

A continuación, como un paso posterior a la generación, ejecute sn -Ra YourAssembly.dll YourAssembly.snk

+0

Necesitaba punto y coma después de los atributos [ensamblado]. – Anton

Cuestiones relacionadas