2008-12-31 107 views
18

Dos máquinas. Ambos con .NET 3.5 y el VS 2008 VC++ redistributables SP1Validación de nombre seguro Falló

Un solo exe que utiliza dos archivos DLL firmados, uno en C++/CLI y uno en C#

las cargas exe y funciona muy bien en una máquina.

Por otro, consigo "Validación de nombre seguro Error" en el ejecutable C++ (HRESULT 0x8013141A)

¿Alguna idea?

+0

¿Está el supportedRuntimeVersion configurar correctamente en la sección de configuración de la exe.config? –

+0

Finalmente, este enlace me ayudó: http://www.jarredcapellman.com/2013/2/25/monotouch-inside-visual-studio-2012-mscorlib-strong-name-validation-failed – Fery

Respuesta

6

Es el código que se ejecuta en una máquina de "desarrollo" en la que es posible que haya ejecutado "sn.exe -Vr AssemblyName.dll" en algún momento que le permita utilizar un ensamblado firmado con retraso como si estuviera completamente firmado . Cuando transfiere el ensamblado de retraso firmado a otra máquina y lo ejecuta, no se validará el nombre seguro porque no está completamente firmado.

+1

¿Hay alguna otra solución que no sea ¿ejecutando sn.exe en cada otra máquina? – Kakira

13

Debe usar la versión de sn.exe de 64 bits en una máquina de 64 bits. (C: \ Archivos de programa \ Microsoft SDKs \ Windows \ v6.0A \ Bin \ x64 \ sn.exe)

8

Abra el símbolo del sistema como administrador e introduzca el siguiente comando:

"C : \ archivos de programa \ Microsoft SDKs \ Windows \ v6.0A \ Bin \ x64 \ sn.exe" -vr <DLLPath>

Tener en cuenta que el argumento entre mayúsculas y minúsculas. Fuente con más detalles: http://blogs.msdn.com/b/keithmg/archive/2012/03/20/strong-name-validation-failed-exception-from-hresult-0x8013141a.aspx

+7

Cabe señalar que esto realmente no "soluciona" nada, simplemente desactiva la verificación. –

3

Usted podría ser capaz de pasar por alto esta en desarrollo por entrar en la configuración del proyecto -> Firma -> y desmarcando "Muestra de la asamblea".

Me encontré con esto hoy mientras se depuraba contra una copia del código fuente de Entity Framework.

2

Me encontré con esto hoy y tropecé con http://timgeerts.blogspot.co.uk/2009/08/strong-name-validation-failed.html, que parece ser la solución.

Opción 1) Desactive la cobertura del código (en VS 2010, vaya a Configuración de prueba -> Datos y diagnósticos -> Desmarque la casilla "Activado" junto a Cobertura del código).

Opción 2) Agregue el archivo de clave de firma a la configuración de cobertura de código (en VS 2010, vaya a Configuración de prueba -> Datos y diagnósticos -> seleccione Cobertura de código y haga clic en "Configurar" en la parte superior. atributo "keyFile" para la etiqueta CodeCoverage en el archivo .testsettings.)

En VS 2012, la cobertura del código está habilitada de forma predeterminada. Se puede deshabilitar a través de un archivo .runsettings con una exclusión adecuada. Consulte http://msdn.microsoft.com/en-us/library/jj159530.aspx para obtener más información y un archivo de muestra. Para la opción 2, aunque no parece haber una configuración explícita disponible en el archivo .runsettings, lo correcto parece suceder automáticamente con respecto a la firma (YMMV). Sin embargo, si hace referencia a un archivo .testsettings de VS 2010, necesitará editarlo como se indica anteriormente.

0

Estoy trabajando con VS.Neto de Ultimate 2012

y esta solución me ayudó:

Haga clic derecho sobre Proyecto-> propiedades-> Construir Pestaña> cambiar Generar ensamblado de serialización a OFF> hecho

2

El Sn.exe falta en Las versiones más nuevas de Visual Studio. En Visual Studio 2012, debemos usar "Indicador de comando del desarrollador para Visual Studio 2012". Luego ejecute el comando "sn".

Sintaxis: sn -vr *, 2d58152b8e842be2

donde "2d58152b8e842be2" es el símbolo de clave pública se muestra en el mensaje de error. De alguna manera esto solo no resolvió mi problema.

10

Abra el símbolo del sistema como administrador e introduzca los siguientes comandos:

reg DELETE "HKLM\Software\Microsoft\StrongName\Verification" /f 
reg ADD "HKLM\Software\Microsoft\StrongName\Verification\*,*" /f 
reg DELETE "HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification" /f 
reg ADD "HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification\*,*" /f 
3

En mi caso, tuve el mismo problema con Visual Studio 2015 y ya habían firmado el montaje.

Lo arreglé de esta manera: Haga clic con el botón derecho en el proyecto que causa el problema -> "Propiedades" -> "Crear" -> Cambie el valor del campo "Plataforma objetivo".

tuve que cambiarlo de Any CPU a x86 pero supongo que, en función del proyecto y la biblioteca que está fallando, debe cambiar su valor a x64.

0

Lo arreglé yendo al menú Compilar (panel superior) y decir "Reconstruir xxxProject.plugin" solo para ese proyecto específico, al contrario que para construir toda la solución.

0

Haga clic en Propiedades del proyecto → → separador Crear → → Plataforma de destino Seleccione "x64"

Cuestiones relacionadas