App.config我的文档宏

时间:2015-08-26 16:45:12

标签: .net app-config special-folders

我正在尝试在连接字符串中包含替换,因此我可以将特定于用户的信息保留在其中,而不是引用C:\Users\<myid>\Documents,并让应用程序动态解析路径。我在回答另一个SO问题时看到应用程序数据可以用${AppData}引用,但到目前为止我还没有找到类似的变量/宏来引用Documents文件夹,甚至是基本用户文件夹。我已经尝试了${MyDocuments}${Documents},但无济于事,我找不到包含所有可能性的列表。有没有办法在不编写自定义配置代码的情况下执行此操作?如果这是唯一的出路,我不反对。但是,如果存在,我宁愿使用烘焙解决方案。

1 个答案:

答案 0 :(得分:1)

提供的间接是| DataDirectory |,它在AppDomain中配置。但是这需要修改一个.config文件,这对于服务器式的应用来说是非常合理的,但如果你只是想从用户的主目录中获取文件,那就不是你要寻找的东西。

最简单的方法是在运行时格式化字符串。您可以在应用程序设置中指定连接字符串,如下所示:

Server=.\SQLExpress;AttachDbFilename={0}\MyDataFile.mdf;Database=dbname

注意{0},它允许您使用String.Format():

插入目录
    var homedir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    var connstr = string.Format(Properties.Settings.Default.ConnectionString, homedir);

当用户想要一个完全不同的位置时,你仍然有一个后门,他只需将app.exe.config文件更改为他想要的目录。