我是否需要在配置文件中转义反斜杠?

时间:2011-04-16 08:29:58

标签: c# .net configuration escaping app-config

我有一个配置文件myapp.exe.config。 在文件中,我有一个带有完整路径文件名的属性作为值。

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

如果我使用单反斜杠或双反斜杠似乎有效。也就是说,

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

也有效。这样做的正确方法是什么?

4 个答案:

答案 0 :(得分:25)

你不需要那个。属性值中的任何内容都是字符数据。

由于您使用C#读取这些值,因此它们将被转义,就好像它们是代码中的文字路径字符串一样。

无论如何,您可能想知道C#有@运算符来声明逐字字符串,这意味着在代码中使用文字路径时不需要转义反斜杠:

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

答案 1 :(得分:17)

反斜杠在XML中没有特殊含义,因此不应对它们进行转义。

此外,如果您要以XML格式转义反斜杠,则不会使用\\,而是使用&#92;

它与双反斜杠一起使用的原因还在于文件系统是宽容的。您可以使用路径c:\\temp\\info.txt来访问文件c:\temp\info.txt

答案 2 :(得分:2)

基本上,URL或URI包含单斜杠\,因此最好使用单斜杠。编写代码时出现问题,但在XML中使用单斜杠没有问题。

答案 3 :(得分:0)

我认为最好的方法是防止双反斜杠以防万一,但如果它有效,为什么要改变呢。当您将配置值读入应用程序时,可能将“\\”替换为“\”。