2012-08-23 56 views
7

VS 2010, Windows Server 2003, .NET Solution 3.5, que se migurated de .Net 1.1SGEN: Error: No se pudo cargar el archivo o ensamblado (Excepción de HRESULT: 0x8013141A)

Todos los proyectos están en solución retardo firmado . La solución puede construirse con éxito para Debug, pero siempre falló para Release con el siguiente error. SGEN: error: No se pudo cargar el archivo o el ensamblado 'AssemblingX, Version = 1.0.5000.0, Culture = neutral, PublicKeyToken = xxxxxxxx' o una de sus dependencias. La validación del nombre fuerte falló. (Excepción de HRESULT: 0x8013141A)

El EnsamblajeX es el proyecto que quiero construir. Todos los archivos DLL a los que se hace referencia en este proyecto se guardan en la carpeta local y ya están firmados. Si cambio la propiedad del proyecto Ensamblando X para firmarlo, entonces se puede construir la solución para su lanzamiento con éxito.

he creado un sgen.exe.config para permitir "loadFromRemoteSources" siguiendo el guiado en http://social.msdn.microsoft.com/Forums/nl-NL/msbuild/thread/695581ae-77e7-4c3a-bb3f-6472b8c47f65

Pero nada cambió. ¿Algunas ideas?

Gracias

Respuesta

17

Este problema se relaciona con la validación de nombres fuertes. Abra su AssemblyX en Ildasm.exe (C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin). Tenga en cuenta que es PublicKeyToken, digamos pkt123 para un ejemplo. Ahora abra el indicador de comando de VS en el modo de administrador y ejecute el comando sn.exe. Tales como:

sn -Vr *,pkt123 

generar la solución de nuevo y todo debería estar bien por ahora.

Pero si no es así y recibe el mismo error ahora también, entonces necesita ejecutar una versión diferente de sn.exe. Para localizar eso, vaya al símbolo del sistema de Visual Studio.

c:\Program Files(x86)>dir /s sn.exe 

Puede tomar de 5 a 10 segundos y debe proporcionar una lista de archivos sn.exe. Vaya a la ruta y ejecute sn.exe, requerido o que le pertenece, como se muestra arriba. Si no está seguro de cuál ejecutar, ejecute todos los sn.exe. Eso debería y debe resolver su problema. Si no, avíseme y permítame continuar con el RnD nuevamente.

+0

Awesome Solution, Thanks :) – Mark

+0

Gracias Mark .... :) – Sandy

+0

Lifesaver !! Gracias – mo13

3

Como no puedo comentar la única respuesta a esto, quería asegurarme de que los demás usuarios que respondieron esta pregunta no cometan los mismos errores que otros. De acuerdo con la documentación de MSDN para la utilidad de nomenclatura fuerte, el uso del conmutador Vr (omisión de firma) puede ocasionar que se carguen ensamblajes maliciosos y solo debe utilizarse en DESARROLLO y no en implementación.

http://msdn.microsoft.com/en-us/library/k5b5tt23(v=vs.80).aspx

0

si todavía no se ha resuelto tiene que eliminar o conjunto AllowStrongNameBypass (DWORD) a "1" en la clave

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework 

en 64 bits ordenadores,

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework 

y

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework 
1

En mi caso, la razón fue que la biblioteca nativa se creó en una carpeta diferente y luego en el resto de la aplicación.

0

Abrir cmd.

Cd "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin" 

Run:

sn –Vr **AssemblingX** name (without dll extension), **PublicKeyToken**

(el código)

Reconstruir la solución. Y debería ser resuelto.

Cuestiones relacionadas