49

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

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

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

<?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. 还是我错过了什么?

编辑

带配置的类(全视图)

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]);
        }
    }
}

编辑2

添加它的外观

在此处输入图像描述

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

编辑3

在此处输入图像描述

编辑 4

在此处输入图像描述

4

4 回答 4

41

好的,我花了一段时间才看到这个,但它无法编译:

return String.(ConfigurationManager.AppSettings[paramName]);

您甚至没有调用该String类型的方法。只需这样做:

return ConfigurationManager.AppSettings[paramName];

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


根据您的编辑,您尚未为您正在处理的项目添加对程序集的引用。System.Configuration

于 2013-10-07T19:20:43.457 回答
7

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

Install-Package System.Configuration.ConfigurationManager 

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

Install-Package System.Configuration.ConfigurationManager -Version 4.5.0

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

于 2019-10-21T14:57:09.643 回答
0

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

    /// <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];
    }
于 2017-08-18T14:35:24.373 回答
0

按照以下步骤添加对 System.Configuration.dll 的引用:

在项目菜单上,选择添加引用。
在“添加引用”对话框中,选择 .NET 选项卡。
查找并选择 System.Configuration 的组件名称。
选择确定。

这应该添加 ConfigurationManager

从应用程序配置文件存储和检索自定义信息

于 2021-06-30T09:06:05.677 回答