如何使用ConfigurationManager

问题描述 投票:0回答:6

我想使用 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

添加它的外观

enter image description here

这意味着问题不是在使用期间

ConfigurationManger
而是之前 - 程序“说”它“不知道这样的元素”,据我了解错误 - “Element ConfigurationManager”在这样的上下文中不存在”

编辑3

enter image description here

编辑4

enter image description here

c# .net winforms configuration config
6个回答
41
投票

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

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

您甚至没有调用

String
类型的方法。只需这样做:

return ConfigurationManager.AppSettings[paramName];

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


根据您的编辑,您尚未将引用添加到您正在处理的项目的System.Configuration

程序集中。


12
投票
转到

tools

 >> 
nuget
 >> 
console
 并输入:

Install-Package System.Configuration.ConfigurationManager

如果您想要特定版本:

Install-Package System.Configuration.ConfigurationManager -Version 4.5.0

您的

ConfigurationManager

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


2
投票

使用 ASP .NET6

安装NuGet包

System.Configuration.ConfigurationManager

我的配置文件的名称是

App.Config

App.config内容:

<?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> <add key="DBConnectionString" value="aa" /> <add key="DBName" value="bb" /> <add key="AuthKey" value="cc" /> </appSettings> </configuration>
文件读取值,即SettingsService.cs:

using namespc = System.Configuration; namespace Ecommerce_server.Services.SetupOperation { public interface ISettingsService { string MongoDBConnectionString { get => namespc.ConfigurationManager.AppSettings["DBConnectionString"]!; } string DataBaseName { get => namespc.ConfigurationManager.AppSettings["DBConnectionString"]!; } public string AuthKey { get => namespc.ConfigurationManager.AppSettings["DBConnectionString"]!; } } public class SettingsService : ISettingsService { public string MongoDBConnectionString { get => namespc.ConfigurationManager.AppSettings["DBConnectionString"]!; } public string DataBaseName { get => namespc.ConfigurationManager.AppSettings["DBConnectionString"]!; } public string AuthKey { get => namespc.ConfigurationManager.AppSettings["DBConnectionString"]!; } } }

注意:我们必须为ConfigurationManger创建一个专门的命名空间来解决歧义。


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

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

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

在“项目”菜单上,选择“添加引用”。

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

这应该添加配置管理器

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


0
投票
我也是这么做的;

    从 nuget 安装此软件包。
安装包System.Configuration.ConfigurationManager

    在您想要申请的页面使用此功能;
使用namepc = System.Configuration;

    从 Jason 配置文件中获取值
字符串ConStrings = namepc.ConfigurationManager.ConnectionStrings[0].ToString();

私有字符串 ConnectionStrings { get => namespc.ConfigurationManager.AppSettings["ConnectionStrings"]!; }

对于App.config文件

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.