在App.config文件中的appSettings部分是否可以引用主目录?

6

我有一个在Visual Studio (2010)中的C#项目,我想在项目的App.config文件的<appSettings>部分引用我的主目录中的文件。也就是说,我使用以下语法:

<appSettings>
    <add key="Database" value="sqlite:///C:\Users\arvek\test.db3" />
</appSettings>

是否可以通过变量引用我的主目录(C:\Users\arvek),而不是直接硬编码它?例如:value="sqlite:///$HOME\test.db3"。

2个回答

10

ConfigurationManager不会自动展开应用程序设置中的任何内容,因为它们只是自由格式的字符串,但是您可以手动执行此操作。使用EnvironmentExpandEnvironmentVariables方法,该方法将根据当前环境展开形式为%VARIABLENAME%的变量。所以:

<appSettings>
    <add key="Database" value="sqlite:///%APPDATA%\database\test.db3" />
</appSettings>


string path = Environment.ExpandEnvironmentVariables(ConfigurationManager.AppSettings["Database"]);

你的“主目录”根路径在%USERPROFILE%变量中,虽然%APPDATA%是放置你所说内容的传统位置。对于系统范围的数据,还有%ALLUSERSPROFILE%(尽管在Windows 7中,它实际上指向一个特殊的系统范围数据文件夹,而不是“公共”配置文件)。


我简直不敢相信我没有想到自己处理变量扩展 :) 不过在 %APPDATA% 这个问题上你做得很好。 - aknuds1

0

我发现使用这一行简单的代码获取应用程序目录更容易

string appBasePath = AppDomain.CurrentDomain.BaseDirectory;

那就是我经常提到它的方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接