2009-10-28 12 views
6

Esto puede sonar como una pregunta inusual, pero tengo curiosidad sobre cómo puedo agregar una columna adicional a la configuración del archivo resx (entonces tendría algo como "nombre, valor, comentario, foo")agregando archivo de columna de resolución personalizada

He mirado en línea y no he oído hablar de nadie más que intente algo como esto, pero creo que sería posible hacerlo escribiendo un nuevo lector y escritor de resx. Solo quería saber si alguien tenía alguna idea sobre este problema, principalmente tengo la intención de usar esto para almacenar mensajes y registrarlos con una prioridad almacenada en el archivo de recursos (columna foo en este caso)

+0

Dando crédito a Mikael en este caso, aunque no he podido hacer un lector y escritor personalizado para que visual studio me permita tener mi columna adicional, puedo modificar el esquema siempre y cuando no lo haga t abra el editor de Visual Studio (que realmente me gustaría hacer). Si alguien tiene más información sobre cómo generar un lector/escritor que trabaje para un archivo de columna de 3 o más, agradecería que –

+0

edité mi respuesta. Me parece que el editor de VS incorporado está bloqueado en el formato de resx predeterminado. –

Respuesta

5

Puede abrir el archivo resx con el editor XML y modifique el esquema, pero el editor de resx incorporado en Visual Studio eliminará cualquier columna que agregue manualmente al esquema.

Pero al crear su propio lector debería ser posible.

[Editar] He duplicado el ResXResourceReader/Writer desde el .Net framework, pero cuando los agrego al archivo .resx, el Editor de recursos administrados en .Net arroja un error. Mi mejor sugerencia es agregar una nueva columna al esquema y usar otro editor como el del http://madskristensen.net/post/A-NET-resource-editor-application-for-resx-files.aspx. Simplemente modifique el código para dar cuenta de su columna adicional.

+0

¿hay alguna manera de anular el editor predeterminado de Visual Studio? Sería bueno usar el editor si es posible, pero puedo escribir mi propia pequeña aplicación para manejar la nueva columna si es necesario. Me preocupa principalmente la parte "Visual Studio eliminará cualquier columna que agregue", ya que no quiero que simplemente elimine las prioridades de registro o cualquier otra cosa que pueda agregarse. –

+0

Fui un poco prematuro con mi respuesta. Se eliminan debido a la referencia en el archivo resx a System.Resources.ResXResourceReader y System.Resources.ResXResourceWriter. Si hereda esto o implementa IResourceReader en su propio lector/escritor y pone el dll en el GAC, estoy seguro de que puede extender el esquema y agregar otra columna. –

+0

parece que tendré que hacer esto, y con un poco de suerte volveré en un par de días para comprobar su respuesta. –

1

Trate de usar un sistema de denominación sencilla para almacenar los pares de valores clave para su "nombre", por ejemplo:

name->"value" 
name-comment->"comment value" 
name-foo->"foo value" 

Esto le permitiría almacenar cualquier número de nombres de número--> pares de valores para su " nuevas columnas ".

Si sus requisitos son más complejos & sutiles, entonces investigue escribiendo su propio lector/escritor de recursos.

Además, esto parece que tiene un requisito que más se aproxima a una tabla de base de datos. Observe el uso de SQLite como un almacén de datos, posiblemente.

+1

tiene razón en la idea de la base de datos, yo En realidad estoy tratando de alejarme de eso, ya que hará más difícil portar la aplicación a otras máquinas que necesitarán los datos almacenados. –

+0

SQLite es incrustable en su aplicación. Puede moverlo fácilmente entre máquinas (o mover su archivo de datos) sin ningún tipo de pasos de instalación adicionales. Sin embargo, pierdes todas las cosas buenas de usar archivos de recursos ... ¡Sigue con mi primera sugerencia! –

+0

tenga en cuenta que la otra razón para usar archivos resx es porque queremos internacionalizar nuestro producto. –

Cuestiones relacionadas