如何正确使用app.config?

时间:2017-06-28 15:06:48

标签: c# wpf app-config

目前我在我的库中创建了一个像这样建立的app.config文件:

    <div
        style="text-align: center; display: flex; flex-direction: row; justify-content: center; align-items: center; height: 400px;">


        <div style="">
            <img style="text-align: center;" src="laptop.png">
            <p>logo</p>
        </div>

        <div style="margin-left: 120px; margin-right: 120px;">
            <img src="laptop.png">
            <p>logo</p>
        </div>

        <div style="">
            <img src="laptop.png">
            <p>logo</p>
        </div>

    </div>

我需要我的用户通过添加和/或删除格式甚至添加新设置来修改此设置。我使用<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> <appSettings> <add key ="DATE" value="dd/MM/yyyy"/> <add key ="TIME" value="HH:mm|HH:mm:ss"/> <add key ="DURATION" value="ss|mm:ss|hh:mm:ss|hhmmss"/> <add key ="LAT_LONG" value="dd.ddddd[N,S]dd.ddddd[E,W]|[-]dd.ddddd°,[-]dd.ddddd°|[-]ddmmss.ssss, [-]dddmmss.ssss "/> </appSettings> </configuration> 来做到这一点。

现在我怀疑这将在部署此应用程序时实际工作,因为如果我理解我在之前的研究中读到的内容,ConfigurationManager无法在运行时进行修改。我必须使用appSettings吗?在这种情况下,我可以直接在这个userSettings文件中添加它们吗?如何正常工作app.Config?我可以使用userSettings进行互动吗?

编辑:好的,我知道我已经问了很多东西,所以让我们简单一点。我可以将userSettings节点添加到我的app.Config吗?如果是的话,我的应用程序是否真正适用于它们?

2 个答案:

答案 0 :(得分:0)

如果您想设置用户个性化配置,您可以按照MS为我们(开发人员)准备的简单路径。

在这种情况下,您只需使用项目的“属性”菜单定义初始设置,然后选择“设置”。

您可以在此处定义两种设置。应用程序设置(对该计算机上的所有用户有效且不易从代码修改)和用户设置。这些最后的用户按用户分隔,并在用户文件夹层次结构内的客户端计算机上的某个obsure文件夹中写入。

可以使用“设置”类在运行时更改和保存这些设置 因此,假设您在项目的“设置”配置中添加了类型为字符串和范围User的DateFormat设置。

现在您可以使用

检索它
string format = Settings.Default.DateFormat;
....
format = "dd/MM/yy";
Settings.Default.DateFormat = format;
Settings.Default.Save();

这是让你开始的基础。当您需要升级存储在用户设置文件中的信息时,您还应该查看this question and answer来处理这种情况

答案 1 :(得分:0)

我建议你考虑稍微改变一下。也就是说,为什么不使用文本文件或数据库(这个用例可能是太多的开销)来存储用户特定的设置。 AppConfig适用于特定于应用程序的内容,无论如何将用户关注点分离出来可能是一个好主意。将用户设置存储为文本文件中的json对象,并将其直接序列化到UserSettings对象。

但是,请查看ServiceStack.Text以处理AppSettings,序列化/去序列化设置到POCO对象。以下是an example如何使用api进行AppSettings。

但是,再次使用AppSettings,您可以从文本文件中读取/写入并序列化到您选择的对象,仍然使用相同的apis。