it-swarm.com.de

Muss ich einen Backslash in einer Konfigurationsdatei umgehen?

Ich habe eine Konfigurationsdatei, myapp.exe.config. In der Datei habe ich ein Attribut mit einem vollständigen Pfad Dateinamen als Wert.

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

Es scheint zu funktionieren, wenn ich einen einfachen oder doppelten Backslash verwende. Das ist,

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

funktioniert auch. Was ist der richtige Weg, um dies zu tun?

28
RogerS

Das brauchst du nicht. Alles innerhalb eines Attributwertes sind Zeichendaten.

Da Sie diese Werte mit C # lesen, werden sie als Zeichen einer wörtlichen Pfadzeichenfolge im Code maskiert.

Auf jeden Fall möchten Sie vielleicht wissen, dass C # über den @-Operator verfügt, um verbatim-Zeichenfolgen zu deklarieren. Dies bedeutet, dass Sie bei der Verwendung von Literalpfaden im Code keine umgekehrten Schrägstriche verwenden müssen:

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

Ein Backslash hat in XML keine besondere Bedeutung und sollte daher nicht mit Escapezeichen versehen werden.

Wenn Sie die umgekehrten Schrägstriche in XML mit Escapezeichen versehen, würden Sie \\ nicht verwenden, würden Sie &#92; verwenden.

Der Grund, warum es mit doppelten Backslashes arbeitet, ist auch, dass das Dateisystem nachsichtig ist. Sie können den Pfad c:\\temp\\info.txt verwenden, um die Datei c:\temp\info.txt zu erreichen.

16
Guffa

Grundsätzlich enthält URL oder URI einen einzelnen Schrägstrich \, daher ist es besser, einen einzelnen Schrägstrich zu verwenden. Das Problem tritt beim Schreiben von Code auf, aber in XML gibt es kein Problem, einen einzelnen Schrägstrich zu verwenden. 

2
Javed Akram

Ich denke, das Beste wäre, um den doppelten Backslash für alle Fälle zu verhindern, aber wenn es funktioniert, warum sollte es geändert werden. Ersetzen Sie möglicherweise "\\" durch "\", wenn Sie den Konfigurationswert in Ihre Anwendung einlesen.

0
Ryan Gunn