2011-04-16 7 views
25

Tengo un archivo de configuración, myapp.exe.config. En el archivo, tengo un atributo con un nombre de archivo de ruta completa como valor.¿Debo escapar de una barra invertida en un archivo de configuración?

<add key="InfoFile" value="c:\temp\info.txt" /> 

Parece que funciona si uso una barra invertida simple o doble. Es decir,

<add key="InfoFile" value="c:\\temp\\info.txt" /> 

funciona también. ¿Cuál es la forma correcta de hacer esto?

Respuesta

21

No necesita eso. Cualquier cosa dentro de un valor de atributo es datos de carácter.

Dado que está leyendo estos valores usando C#, se escaparán como si fueran una cadena de ruta de acceso literal en el código.

De todos modos, es posible que desee saber que C# tiene @ operador para declarar cadenas literales, lo que significa que no es necesario para escapar las barras invertidas al usar caminos literales en el código:

string somePath = @"C:\blah\blih\bluh.txt"; 
+0

Creo que la pregunta es de qué manera es correcta si está configurando la cadena de esta manera: string m_path = ConfigurationManager.AppSettings ["InfoFile"]. ToString(); No puede agregar "@" en ese punto. – smoore4

+0

@SQLDBA ¿Por qué tiene tal conclusión? :/ –

+0

Porque la pregunta comienza "Tengo un archivo de configuración ..." ¿Estás diciendo que puedes hacer esto? No lo creo. Por supuesto, puede hacer lo que está diciendo en código directo detrás, pero si lo está leyendo desde app.config, que está haciendo el OP, entonces en realidad es solo barras simples y no el doble. – smoore4

0

creo que lo mejor sería para evitar la doble barra invertida por si acaso, pero si funciona, por qué cambiarla. Tal vez reemplace "\\" con "\" cuando lea el valor de configuración en su aplicación.

1

Básicamente URL o URI tiene una barra oblicua \ por lo que es mejor usar una barra oblicua. El problema se produce al escribir código, pero en XML no hay problema para usar una sola barra inclinada.

15

Una barra diagonal inversa no tiene ningún significado especial en XML, por lo que no se debe escapar.

Además, si escaparas de las barras invertidas en XML no usarías \\, usarías &#92;.

La razón por la que funciona con barras diagonales dobles también es que el sistema de archivos es indulgente. Puede usar la ruta c:\\temp\\info.txt para llegar al archivo c:\temp\info.txt.

+0

El sistema de archivos no lo perdona. Puedes tener tantos \ como quieras. Pruébalo en la línea de comando. Heck incluso el apoyo de la URL eso! Pruebe http://stackoverflow.com/////////////////questions///////////////5685344 – leppie

+15

@leppie: ¿Cuál es su punto? ? Te estás contradiciendo a ti mismo. – Guffa

Cuestiones relacionadas