2011-04-04 12 views
9

Cuando abro la ventana principal de diseño de formulario (archivo C# en VS2010), el archivo de recursos asociado se modifica automáticamente, a veces su ubicación, a veces son los datos de una imagen o solo el orden del código se reorganiza. Todo sigue compilando y funciona bien, es molesto que tenga que tener en cuenta para revertir esos cambios o de lo contrario cometeré un galimatías constantemente en mi repositorio. ¿Alguien sabe por qué sucede esto, tal vez debido a algún componente?Los archivos de recursos se modifican cuando se abre el formulario en Visual Studio

EDIT:

Por ejemplo, estos datos:

<data name="connectToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> 
    <value> 
     somevalue 
    </value> 

se cambia automáticamente a:

<data name="connectToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> 
    <value> 
     someothervalue 
    </value> 

y poner en un lugar diferente. Todo sigue funcionando bien, el problema es que esos cambios aparecen en mi control de fuente, así que tengo que recordar revertir el archivo resx antes de hacer una confirmación, a menos que haga algunas modificaciones en el archivo, entonces tengo que confirmar todo.

+0

¿Cómo lo hace.. actuar si los archivos de recursos no están desprotegidos, es decir, solo de forma legible? – ExtraGravy

+2

galimatías? Tendrás que explicar eso mejor. Anular los archivos generados y/o modificados por el diseñador es una excelente manera de volar la pierna. –

+0

Tiempo para actualizar a Visual Studio 2015 :) – jessehouwing

Respuesta

5

a menos que realmente hacen algunas modificaciones en el archivo, entonces tengo que cometer todo

Es bastante claro exactamente lo que se hace cuando se vea forzado a cometer el archivo .resx de alguna manera no convertir la imagen en "galimatías". La queja simplemente no es muy creíble, supongo que el verdadero problema es que el archivo .resx cambia y no tienes idea de por qué.

Existe una razón cada vez más común para que los archivos .resx cambien sin ningún motivo obvio, basta con abrir el formulario en el diseñador. Especialmente últimamente con Windows 10 cada vez más común. La causa subyacente es la configuración DPI (puntos por pulgada) del adaptador de video. Esta configuración se ha estancado durante décadas al 100% (también conocido como 96 ppp), pero los paneles LCD baratos de muy alta resolución se están volviendo comunes, lo que obliga a los usuarios a aumentar el escalado al 125 o 150% para mantener el texto legible. Y para que el instalador de Win10 elija un valor más alto.

Esto tiene un efecto bastante significativo en el diseño de la IU, la propiedad Form.AutoScaleMode hace su trabajo también en el momento del diseño. Visual Studio es dpiAware, por lo que el diseñador puede ver el cambio de DPI. WYSIWYG se conserva, siempre que la aplicación se declare dpiAware as well. Muy importante, por cierto, finalmente se hizo un poco más fácil con VS2015 Actualización 1, la plantilla de elemento del Archivo de Manifiesto de Aplicación ahora lo incluye. Solo elimine los comentarios.

Este hace cambiar el contenido del archivo .resx también. Específicamente para un MenuStrip, su TrayLocation se serializa al archivo. Y el método OnImageScalingSizeChanged() del elemento de menú se ejecuta en tiempo de diseño. También para cualquier control si la propiedad Localizable del formulario se establece en True, que obtiene sus propiedades de Ubicación y Tamaño serializadas en el archivo .resx.

La forma más fácil de reconocer que es la causa subyacente es mirar Designer.cs archivo del formulario:

this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); 

comparar esto con la misma asignación de propiedad en un nuevo proyecto Winforms marca. Un valor diferente hará que el reajuste automático haga su trabajo y altere el archivo .resx.

El motivo habitual de una discrepancia es un diseño que se creó en otra máquina. Quizás uno más viejo. O tal vez modificado por otro miembro del equipo que ejecuta su adaptador de pantalla en una configuración diferente de DPI. Hacer que todos estén de acuerdo generalmente no es tan simple si los miembros del equipo no tienen el mismo hardware. Darle a todos el mismo buen monitor es una excelente mejora moral por poco dinero :) Y tal vez no deberías pelear tan duro, solo regístrate para que no tengas que recordarte la próxima vez.

1

Simplemente agregue esos archivos a su archivo .gitignore. (Si está usando GIT)

Esto es lo que se parece a la mía:.

** suo ** ** bin obj ** ** bin obj

+0

Ah, también ignore el archivo .manifest. – Radmation

+0

Sí ... ese es mi enfoque actual. Pero, ¿qué sucede si modifico intencionalmente el archivo de recursos y quiero comprometer solo los cambios que he realizado (un par de líneas) y el estudio visual ha cambiado todo el archivo? que es un tipo de problema – Tawcharowsky

Cuestiones relacionadas