Ai-je besoin d'échapper à backslash dans un fichier de configuration?
j'ai un fichier de configuration, myapp.EXE.config. Dans le fichier j'ai un attribut avec un nom de fichier fullpath comme valeur.
<add key="InfoFile" value="c:tempinfo.txt" />
il semble que cela fonctionne si j'utilise un simple ou un double backslash. C'est-à -
<add key="InfoFile" value="c:tempinfo.txt" />
fonctionne aussi. Quelle est la bonne façon de le faire?
4 réponses
Vous n'en avez pas besoin. Tout ce qui fait partie d'une valeur d'attribut est une donnée de caractère.
puisque vous lisez ces valeurs en utilisant C#, elles s'échapperont comme si elles étaient une chaîne de chemin littérale dans le code.
@ opérateur pour déclarer des chaînes verbatim, ce qui signifie que vous n'avez pas besoin d'échapper aux retours de barres obliques lorsque vous utilisez des chemins littéraux dans le code:string somePath = @"C:\blah\blih\bluh.txt";
un antislash n'a pas de signification particulière dans XML, donc ils ne doivent pas être échappés.
de plus, si vous échappiez aux antislashs en XML, vous n'utiliseriez pas \
, vous pouvez utiliser \
.
la raison pour laquelle il fonctionne avec les antislashs doubles est aussi que le système de fichiers est indulgent. Vous pouvez utiliser le chemin d'accès c:\temp\info.txt
pour atteindre le fichier c:\temp\info.txt
.
Fondamentalement URL ou URI détient seule barre oblique \
il est donc préférable d'utiliser une barre oblique simple. Le problème vient pendant l'écriture du code, mais dans XML il n'y a aucun problème pour utiliser la barre oblique simple.
je pense que le mieux serait d'éviter la double barre oblique inverse juste au cas où, mais si ça marche pourquoi changer. Peut-être remplacer "\\" par "\" quand vous lisez la valeur de configuration dans votre application.