ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

我必须从ConfigurationSection派生以支持每个用户的设置吗?

2019-12-10 17:05:54  阅读:281  来源: 互联网

标签:configurationmanager configuration settings c net


我在玩.NET的配置支持(ConfigurationManager类和相关的支持类).我想编写一个安装后的应用程序:

>在foo.exe.config中具有默认设置(在“程序文件”中).
>用户以后可以使用应保留的非默认值覆盖设置.
>用户的首选项应保留在用户的配置文件中,因为他不应该对Program Files目录具有写权限.

设置用户后,应用程序应使用其首选项,否则应使用默认设置.

看起来这应该很容易-这是一种非常常见的模式.但是我对此的尝试遇到了麻烦,我想知道我是否采取了正确的方法.

以下代码生成运行时异常“锁定时无法编辑ConfigurationSection属性”.

using System;
using System.Configuration;

namespace DemoAppSettingsProblem
{
    class Program
    {
        static void Main(string[] args)
        {
            Configuration userConfig =
                ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
            if ( userConfig.AppSettings.Settings["foo"] != null )
                userConfig.AppSettings.Settings.Remove("foo");

            userConfig.AppSettings.Settings.Add("foo", "The string is foo.");

            userConfig.Save(ConfigurationSaveMode.Modified);    // exception!
        }
    }
}

问题是.NET定义的< appSettings>该部分使用默认的allowExeDefinition = MachineToApplication声明(请参见Microsoft的Irena Kennedy的nice post).这禁止将该部分写入用户的配置文件(本地或漫游).

因此,我假设我需要使用allowExeDefinition = MachineToLocalUser定义自己的部分.但是据我从MSDN文档可以得知,这意味着我需要创建自己的配置类,该类从ConfigurationSection派生.那里的例子使我朝着比我期望的方向更多的工作,这通常会引起我的警钟,表明我做错了事.

真的很难实现吗? .NET是否提供一种简单的方法来支持此功能,还是我应该完全采用另一种方法?

解决方法:

我使用了设置功能,它可以为您将用户设置写入应用程序配置…

http://msdn.microsoft.com/en-us/library/aa730869(VS.80).aspx

标签:configurationmanager,configuration,settings,c,net
来源: https://codeday.me/bug/20191210/2103121.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有