.net - recurso - no se puede procesar el archivo resx
¿Cómo puedo comparar múltiples archivos.resx? (7)
¿Cómo puedo comparar el contenido de dos (o más) archivos .resx grandes? Con cientos de pares Nombre / Valor en cada archivo, sería muy útil ver una versión combinada. Estoy especialmente interesado en los pares Nombre / Valor que están presentes en la cultura neutral, pero que no están especificados en una versión específica de la cultura.
Aunque no es una herramienta de diferencia per se, RESX Synchronizer puede ayudarte aquí. Su uso principal es actualizar los archivos .resx localizados con nuevas entradas del idioma neutral, y eliminar los elementos eliminados.
Posiblemente, la salida generada al usarla con el modificador de línea de comando / v será lo que necesite. De lo contrario, viene con el código fuente completo de C #, por lo que posiblemente pueda adaptarlo a sus necesidades.
Puedes codificar algo usando XML Diff. Consulte Uso de XML Diff and Patch Tool en sus aplicaciones .
Usar un diff simple en archivos XML puede ser totalmente inútil, si los elementos coincidentes no aparecen en el mismo orden en ambos archivos. También he estado buscando una herramienta diff específica para XML, hasta ahora sin éxito.
Mientras tanto, la solución que he estado usando es la siguiente:
- Abra los archivos
.resx
en Visual Studio. - Seleccione todo [ Ctrl + A ] y corte [ Ctrl + X ] (esto puede tomar un tiempo para archivos grandes - sea paciente)
- Pega [ Ctrl + V ] y guarda (esto volverá a crear los archivos
.resx
ordenados por claves)
Cuando ambos archivos son así reordenados, la diferencia normal se vuelve mucho más fácil. Puede localizar rápidamente las teclas que faltan pasando por el diff ahora.
He probado varias herramientas XMl diff. Aquí está el resumen (el requisito que me llevó a evaluarlo fue .resx
los archivos de recursos .resx
generados por Visual Studio, que creo que es una gran falla que cometió Microsoft: el orden de los elementos es aleatorio y Windows Forms siempre reescribe ImageStream si solo cambia la ubicación de un botón y no hace nada con la imageList).
- XmlDiff
- Araxis
- Altova DiffDog
- Bloc de notas XML
- ExamXML
- Liquid XML Studio 2009 (hay un menú XML diff, pero solo una versión de licencia puede usarlo, así que no tengo la oportunidad de probarlo)
En primer lugar, no se deben considerar todas las herramientas de diferencias normales porque no saben nada de XML, tratan los archivos de texto como solo líneas de texto.
XmlDiff es la primera herramienta que probé. Parece que puede querer lo que necesito, pero después de descargar el código fuente ( Visual Studio 2003 ) y compilarlo con Visual Studio 2005 (con una actualización automática exitosa) puedo compilar el proyecto pequeño sin problemas. Pero cuando comparo dos archivos
.resx
reales (1295 líneas) se bloqueó. La depuración en el código no me da una pista sobre lo que sucedió porque no tengo el código fuente dexmldiffpatch.dll XmlDiffPatch.View.dll
.Y la razón por la que no intenté profundizar en esta herramienta fue el formato de salida o el diseño de la GUI. Muestra un archivo HTML con las diferencias resaltadas en una ventana alojada en Internet Explorer. Para una gran diferencia de archivos XML, no es fácil de usar.
XML Notepad tiene una simple diferencia XML incorporada. De acuerdo con la ventana de salida, creo que internamente usa el componente de XmlDiff. Y el resultado es el mismo que XmlDiff. Lo desinstalaré.
Araxis es mucho más una herramienta tradicional de diferencia de texto, también puede comparar archivos binarios, archivos de imágenes, carpetas y palabras. Me gusta mucho para cualquier tarea de diferencia, excepto XML, porque no tiene compatibilidad con opciones de diferencias compatibles con XML.
Altova DiffDog parece un producto comercial complicado, y sí contiene una opción para ignorar el orden de los elementos, que es la característica clave para mí.
Pero después de probarlo con el mismo archivo
.resx
real (1295 líneas, no muy grande en mi experiencia), encontré que el "orden de elemento ignorar" simplemente no funciona bien si los dos elementos están ubicados en lugares muy diferentes en el dos archivos.ExamXML parece un producto comercial, pero es un producto pequeño. Pero después de probarlo, descubrí que es la herramienta más ideal actualmente para mis expectativas.
También hay un lado decepcionante: se bloqueó cuando presioné F10 para navegar a la siguiente diferencia. La opción de ignorar el orden de los elementos funciona bien. Hay una pena que la personalización del elemento ignorado no sea tan flexible.
label1.Size
label1.Location
label1.Width
Quiero ignorar todas las diferencias en estos elementos cuyo nombre contiene ".Size" o ".Location" o ".Width", pero no es posible definir dicha condición al mismo tiempo. La personalización no admite expresiones regulares.
De todos modos, usaré ExamXML (con cuidado) para comparar archivos XML.
Existe una gran herramienta gratuita para editar archivos resx donde puedes ver múltiples idiomas a la vez y ver claramente qué falta o qué es extra - Zeta Resource Editor
Para las versiones más nuevas de Visual Studio (2010+) ahora hay una Extensión de Visual Studio llamada ResXManager (creada por tomenglert ) que es increíble para esto.
Le permite ver cada recurso en cada idioma uno al lado del otro y resalta los recursos faltantes. (El siguiente ejemplo es de la página de descarga de la extensión).
Puede usar una herramienta como la diferencia de TortoiseSVN (si está usando Windows). Simplemente seleccione ambos archivos, haga clic derecho y luego seleccione "diff" del submenú TortoiseSVN.