2010-08-03 14 views
6

Aquí hay una historia con la que me encontré recientemente y una posible respuesta (?) Solo quería compartir esta información porque no pude encontrar esto todavía en stackoverflow.Problemas con archivos RESX en VS2010 targeting 3.5 framework

Actualicé mi solución de VS2008, WinXP, 32 bits A VS2010, Win7, 64 bits.

Cuando realizo modificaciones en WinForms que generan nuevos archivos RESX, o actualizo los archivos RESX, tengo problemas.

Una compilación de depuración con VS2010 no fue un problema. Sin embargo, para el modo Release tengo que usar un proceso de firma de retraso. Ahora ese proceso proporciona errores en nuevos archivos RESX que se generan con VS2010. (Nuevamente tenga en cuenta que los viejos archivos RESX NO muestran este comportamiento)

(CoreResGen target) Search.resx (176,5): error RG0000: No se pudo cargar el archivo o el ensamblaje xxx.Controls, Version = 1.5 0, Culture = neutral, PublicKeyToken = 7acfcc7eabace048 'o una de sus dependencias. La validación del nombre fuerte falló. (Exce el de HRESULT: 0x8013141A) Línea 176, la posición 5.

Aquí es parte de la información que encontré en la web

http://blogs.msdn.com/b/visualstudio/archive/2010/06/19/resgen-exe-error-an-attempt-was-made-to-load-a-program-with-an-incorrect-format.aspx

Me preguntaba si otros peopele encontramos con este, y que solución ¿ellos siguieron? No hay solución significa que esperar a que salga el VS2010 SP1.

Lamentablemente estoy utilizando conjuntos de terceros que podrían haberse compilado como 32 bits. (No tengo el control de su proceso de compilación)

- 8/11/2010 Alguna información adicional.

El control en sí no está firmado o firmado con retraso. Pero el control está utilizando un componente de un ensamblaje que está firmado con retraso. Ambos conjuntos están en la misma solución.

Cuando modifico el ensamblado consumidor para apuntar al marco 4.0, se resuelve el problema. Cuando apunto al framework 3.5, obtenemos el error.

Respuesta

1

El problema que tuvimos fue también con la ImageList dentro del archivo * .resx (abierto en código, no el diseñador):

<data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64"> 
    <value> 
     [bunch of binary data here] 
    </value> 
</data> 

Hemos confirmado esto era sólo la eliminación de la etiqueta <data /> relacionado con el ImageList (véase más arriba) y luego borrar las referencias en el diseñador del control:

//initialize 
this.imageListSuperHeroes = new System.Windows.Forms.ImageList(this.components); 

//control that references the ImageList 
this.btnAwesome.ImageKey = "superman.gif"; 
this.btnAwesome.ImageList = this.imageListSuperHeroes; 

Añadir las referencias de imagen (! utilizar imágenes individuales) del control del "archivo de recursos del Proyecto", en lugar del "recurso local "y actualice las referencias que eliminó de sus formularios.

this.btnAwesome.Image = global::PMPPlus.Properties.Resources.Superman; 

Eso lo solucionó para nosotros y espero que esto lo ayude a avanzar en la dirección correcta. De lo contrario, explore el * .resx para ver qué mala <data /> le está jodiendo.

Enlace relacionado: http://connect.microsoft.com/VisualStudio/feedback/details/566131/error-in-resx-file-when-adding-imagelist

Se sugirió algunas soluciones que no se ajustaban a nuestras necesidades:

  • Target otra plataforma y marco
  • Use corflags para atornillar con su C: \ Archivos de programa \ Directorio de Microsoft SDKs \ Windows \ v7.0A \ Bin!

nuestra configuración

  • antiguo entorno Windows XP 32-bit
  • nuevo entorno: Windows 7 de 64 bits
  • Configuración común: VS2010 + Objetivo Marco: 3.5 + Target Plataforma: x86
Cuestiones relacionadas