使用 C# 在 app.config 文件中封装文件名

Posted

技术标签:

【中文标题】使用 C# 在 app.config 文件中封装文件名【英文标题】:Encasing a filename inside an app.config file using C# 【发布时间】:2012-12-22 21:27:02 【问题描述】:

是否可以将文件名包含在 app.config 文件中并在您的代码中使用它们?

例如,这段代码完美运行:

string folder = @"C:\CDR_FTP1\ttfiles_exported\";

如果我想从 app.config 文件中获取上述值

    可以这样做吗? 语法是什么?

例如,在 app.config 中,我可以尝试使用以下内容:

<add key="InputDir" value=@"D:\CDR_FTP1\ttfiles_exported\" />

我无法添加“@”,因为它会给我以下错误:

"The character '@', hexadecimla value 0x40 is illegal at the beginning of an XML name."

如果我尝试在下面的代码中使用它,那很好,但是我需要在哪里以及如何粘贴“@”以便应用程序正确读取它?

string folder = ConfigurationSettings.AppSettings["InputDir"];

【问题讨论】:

在 c# 中使用前缀 @ 和字符串称为 verbatim string literal。当您想避免在文件路径中多次出现 \ 之类的转义字符时,它很有用。请参阅msdn.microsoft.com/en-us/library/aa691090%28v=vs.71%29.aspx 了解更多信息 【参考方案1】:

只需使用:

<add key="InputDir" value="D:\CDR_FTP1\ttfiles_exported\" />

XML 属性中无需转义\

【讨论】:

所以,如果我将值放在 app.config 中,我根本不需要对代码中的“@”做任何事情 --- 对吗?【参考方案2】:

扩展基里尔的答案:

XML 属性中的特殊字符与 C# 字符串中的特殊字符不同。

在 C# 中,字符 '\' 是字符串转义字符,用于表示转义序列,例如 '\n' 表示行尾,您可能知道;因此需要转义为 '\\' 或使用 @""。

在 XML 中,'\' 在属性值中没有特殊含义,可以按原样使用。这不适用于 '&' 和 '"' 字符等。如果您想包含该值:

M & M "The chocolates"

在 app.config 中,它们必须被转义,所以:

<add key="SomeString" value="M &amp; M &quot;The chocolates&quot;" />

【讨论】:

以上是关于使用 C# 在 app.config 文件中封装文件名的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中使用 app.config 文件定义连接字符串 [重复]

C# 读写App.config配置文件的方法

如何在 C# 中配置 app.config 文件? [复制]

在 Visual Studio 中为 C# 更新 App.Config 文件的最佳方法是啥? [复制]

单个 app.config 多项目 c#

C#中App.config文件配置获取