it-swarm.dev

Czy muszę unikać odwrotnego ukośnika w pliku konfiguracyjnym?

Mam plik konfiguracyjny, myapp.exe.config. W pliku mam atrybut z pełną nazwą pliku jako wartością.

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

Wydaje się działać, jeśli używam pojedynczego lub podwójnego ukośnika odwrotnego. To jest,

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

działa również. Jaki jest właściwy sposób, aby to zrobić?

28
RogerS

Nie potrzebujesz tego. Wszystko w obrębie wartości atrybutu to dane znakowe.

Ponieważ czytasz te wartości za pomocą C #, uciekną one tak, jakby były dosłownym ciągiem znaków w kodzie.

W każdym razie, możesz chcieć wiedzieć, że C # ma operatora @ do deklarowania dosłownych łańcuchów, co oznacza, że ​​nie musisz uciekać ukośnikom odwrotnym, gdy używasz dosłownych ścieżek w kodzie:

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

Ukośnik odwrotny nie ma specjalnego znaczenia w XML, więc nie należy ich uciekać.

Poza tym, gdybyś uniknął odwrotnych ukośników w XML, nie używałbyś \\, używałbyś &#92;.

Powodem, dla którego działa z podwójnymi ukośnikami, jest również to, że system plików jest wybaczający. Możesz użyć ścieżki c:\\temp\\info.txt, aby dotrzeć do pliku c:\temp\info.txt.

16
Guffa

Zasadniczo URL lub URI zawiera pojedynczy ukośnik \, więc lepiej użyć pojedynczego ukośnika. Problem pojawia się podczas pisania kodu, ale w XML nie ma problemu z użyciem pojedynczego ukośnika.

2
Javed Akram

Myślę, że najlepiej byłoby zapobiec podwójnemu ukośnikowi odwrotnemu, ale jeśli to działa, dlaczego to zmienić. Może zamienić „” na „”, gdy czytasz wartość konfiguracyjną w swojej aplikacji.

0
Ryan Gunn