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

时间:2011-07-11 13:52:00

标签: c# .net app-config

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

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

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

2 个答案:

答案 0 :(得分:9)

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

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


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

“home”目录的根路径位于%USERPROFILE%变量中,但%APPDATA%是放置您正在讨论的事物的传统位置。系统范围的数据也有%ALLUSERSPROFILE%(尽管在Windows 7中实际指向特殊的系统范围数据文件夹,而不是“公共”配置文件。)

答案 1 :(得分:0)

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

string appBasePath = AppDomain.CurrentDomain.BaseDirectory;

这就是我总是提到它的方式。