Нужно ли экранировать обратную косую черту в конфигурационном файле? - PullRequest
28 голосов
/ 16 апреля 2011

У меня есть файл конфигурации, myapp.exe.config. В файле у меня есть атрибут с полным именем файла в качестве значения.

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

Кажется, работает, если я использую одинарный или двойной обратный слеш. То есть

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

работает также. Как правильно это сделать?

Ответы [ 4 ]

25 голосов
/ 16 апреля 2011

Тебе это не нужно.Все, что находится внутри значения атрибута, является символьными данными.

Поскольку вы читаете эти значения с помощью C #, они будут экранированы, как если бы они были литеральной строкой пути в коде.

В любом случае,Возможно, вы захотите узнать, что в C # есть оператор @ для объявления дословных строк, что означает, что вам не нужно экранировать обратную косую черту при использовании буквенных путей в коде:

string somePath = @"C:\blah\blih\bluh.txt";
17 голосов
/ 16 апреля 2011

Обратная косая черта не имеет специального значения в XML, поэтому их нельзя экранировать.

Кроме того, если бы вы избежали обратной косой черты в XML, вы бы не использовали \\, вы бы использовали &#92;.

Причина, по которой он работает с двойной обратной косой чертой, также заключается в том, что файловая система прощает. Вы можете использовать путь c:\\temp\\info.txt для доступа к файлу c:\temp\info.txt.

2 голосов
/ 16 апреля 2011

В основном URL или URI содержат одну косую черту \, поэтому лучше использовать одну косую черту.Проблема возникает при написании кода, но в XML нет проблем с использованием одиночной косой черты.

0 голосов
/ 16 апреля 2011

Я думаю, что лучше всего было бы предотвратить двойную обратную косую черту на всякий случай, но если она работает, зачем ее менять. Возможно, замените «\\» на «\», когда прочитаете значение конфигурации в ваше приложение.

...