首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ConfigurationManager

如何使用ConfigurationManager
EN

Stack Overflow用户
提问于 2013-10-07 19:12:30
回答 4查看 188.4K关注 0票数 50

我想使用App.config来存储一些设置。我尝试使用下一段代码从配置文件中获取参数。

代码语言:javascript
复制
private string GetSettingValue(string paramName)
{
    return String.Format(ConfigurationManager.AppSettings[paramName]);
}

我还为它添加了System.Configuration (我使用了一个单独的类),在App.config文件中我有:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <appSettings>
    <add key ="key1" value ="Sample" />
  </appSettings>
</configuration>

但是我在尝试使用ConfigurationManager - ConfigurationManager can't exist in such context时出错了,但是我已经添加了System.Configuration。还是我错过了什么?

编辑

使用config (完整视图)初始化

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;

namespace browser
{
    class ConfigFile
    {
        private string GetSettingValue(string paramName)
        {
            return String.Format(ConfigurationManager.AppSettings[paramName]);
        }
    }
}

EDIT2

加上它的外观

这意味着问题不是在使用ConfigurationManger期间,而是在使用之前--程序“说”它“不知道”我理解错误的“元素”--“元素ConfigurationManager”不存在于这样的上下文中。

EDIT3

编辑4

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-07 19:20:43

好吧,我花了一段时间才看到这个,但这不可能是编译出来的:

代码语言:javascript
复制
return String.(ConfigurationManager.AppSettings[paramName]);

您甚至没有在String类型上调用方法。就这么做吧:

代码语言:javascript
复制
return ConfigurationManager.AppSettings[paramName];

AppSettings KeyValuePair已经返回一个字符串。如果名称不存在,它将返回null

根据您的编辑,您还没有为您正在工作的项目向程序集添加一个引用

票数 41
EN

Stack Overflow用户

发布于 2019-10-21 14:57:09

转到tools >> nuget >> console并键入:

代码语言:javascript
复制
Install-Package System.Configuration.ConfigurationManager 

如果您想要一个特定的版本:

代码语言:javascript
复制
Install-Package System.Configuration.ConfigurationManager -Version 4.5.0

现在将导入ConfigurationManager dll,代码将开始工作。

票数 10
EN

Stack Overflow用户

发布于 2017-08-18 14:35:24

我找到了一些答案,但我不知道这是不是正确的方法。这是我现在的解决方案。幸运的是它没有打破我的设计模式。

代码语言:javascript
复制
    /// <summary>
    /// set config, if key is not in file, create
    /// </summary>
    /// <param name="key">Nome do parâmetro</param>
    /// <param name="value">Valor do parâmetro</param>
    public static void SetConfig(string key, string value)
    {
        var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        var settings = configFile.AppSettings.Settings;
        if (settings[key] == null)
        {
            settings.Add(key, value);
        }
        else
        {
            settings[key].Value = value;
        }
        configFile.Save(ConfigurationSaveMode.Modified);
        ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
    }

    /// <summary>
    /// Get key value, if not found, return null
    /// </summary>
    /// <param name="key"></param>
    /// <returns>null if key is not found, else string with value</returns>
    public static string GetConfig(string key)
    {
        return ConfigurationManager.AppSettings[key];
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19232695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档