自定义文件中的 AppSettings

2024-04-07

我正在努力处理 .NET 2.0 中的配置和设置类

如果以下内容包含在名为的文件中app.config

<config>
<appSettings>
<add key="Foo" value="Hello World!"/>
</appSettings>
</config>

我知道我可以通过以下方式访问应用程序设置

// this returns "Hello World!"
ConfigurationManager.AppSettings["Foo"]

但是,如果该文件被称为app1.config(或任何其他名称)我无法访问 appSetting。 只要我明白,与ConfigurationManager.OpenExeConfiguration我应该阅读自定义配置设置文件。

Configuration conf = ConfigurationManager.OpenExeConfiguration(@"..\..\app1.config");
// this prints an empty string.
Console.WriteLine(conf.AppSettings.Settings["Foo"]);

However conf.AppSettings.Settings["Foo"]返回一个空字符串。

我也尝试过以下代码但没有成功

ExeConfigurationFileMap exeFileMap = new ExeConfigurationFileMap();
exeFileMap.ExeConfigFilename = System.IO.Directory.GetCurrentDirectory()
                                                        + "\\App1.config";
Configuration myConf = ConfigurationManager.OpenMappedExeConfiguration
                                 (exeFileMap, ConfigurationUserLevel.None);
// returns empty string as well
Console.WriteLine(myConf.AppSettings.Settings["Foo"]);

如何从不名为 app.config 的文件中读取设置?


我已经创建了自定义文件我的自定义配置并改变其属性复制到输出目录 to true

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Foo" value="Hello World!"/>
  </appSettings>
</configuration>

在CS文件中

static void Main(string[] args)
{
    var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "myCustomConfiguration.config");
    Dictionary<string, string> dictionary = GetNameValueCollectionSection("appSettings", filePath);

    //To get your key do dictionary["Foo"]
            Console.WriteLine(dictionary["Foo"]);

    Console.ReadLine();
}

private static Dictionary<string, string> GetNameValueCollectionSection(string section, string filePath)
{
    var xDoc = new XmlDocument();
    var nameValueColl = new Dictionary<string, string>();

    var configFileMap = new ExeConfigurationFileMap { ExeConfigFilename = filePath };
    Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);

    string xml = config.GetSection(section).SectionInformation.GetRawXml();
    xDoc.LoadXml(xml);
    XmlNode xList = xDoc.ChildNodes[0];
    foreach (XmlNode xNodo in xList.Cast<XmlNode>().Where(xNodo => xNodo.Attributes != null))
    {
        nameValueColl.Add(xNodo.Attributes[0].Value, xNodo.Attributes[1].Value);
    }

    return nameValueColl;
}

虽然这有效,但我也在寻找更好的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义文件中的 AppSettings 的相关文章

随机推荐

  • 无法在詹金斯中创建“新工作”,“确定”按钮呈灰色

    我正在尝试在詹金斯创建一份新工作 即使将 项目名称 和项目类型设置为 自由式 确定 按钮也会显示为灰色 如所附屏幕截图所示 我在用 Windows 7 32 bit OS Jenkins version 1 619 谁能告诉如何解决这个问题
  • 我从来没有遇到过写得好的业务层。有什么建议吗?

    我环顾四周 看到了一些很棒的代码片段 用于定义规则 验证 业务对象 实体 等 但我不得不承认 我从未见过完整的优秀且编写良好的业务层 我只知道自己不喜欢什么 却不知道什么是好的 谁能指出一些好的 OO 业务层 或出色的业务对象 或者让我知道
  • 为什么 C# 不允许静态方法实现接口?

    为什么C 要这样设计 据我了解 接口仅描述行为 并用于描述实现特定行为的接口的类的合同义务 如果类希望在共享方法中实现该行为 为什么不应该呢 这是我的想法的一个例子 These items will be displayed in a li
  • SQL-计算计数(列)的百分比

    我有下面的代码 它计算事件列中出现的次数 SELECT event count event as event count FROM event information group by event event event count a 3
  • 查找与分组[重复]

    这个问题在这里已经有答案了 我想知道 groupBy 和 ToLookup 扩展方法之间有什么区别 让我们有一个像这样的对象列表 public class Person public uint Id get set public strin
  • 将间隔小于 15 天的行分组并分配最小/最大日期

    如果不同协议的 protocol opening date 彼此相差 15 天内 我需要在名为预期开始日期的另一列中将它们显示为一个协议 我不知道如何复制我的表格 但我会尽力解释 假设一个协议的 start date 为 24 01 201
  • 如何使用卡尔曼滤波器预测测量之间的 GPS 位置

    我研究了OpenCV卡尔曼滤波器的实现 并做了一些基本的鼠标指针模拟并了解了基础 我似乎错过了在我的应用程序中使用它的一些关键点 并希望这里有人可以提供一个小例子 使用具有速度和位置的简单模型 KF statePre at
  • 构造函数生成默认构造函数吗?

    有没有办法通过反射来确定构造函数是否是编译器生成的默认构造函数 或者还有其他办法吗 令人惊讶的是isSynthetic方法不提供此信息 因此无法使用 并且没有Generated存在注释 public class JavaTest publi
  • Google App 脚本在电子表格中查找文本并返回位置索引

    我是谷歌应用程序脚本的新手 我的 JavaScript 也不是很强 但这似乎都不是问题 因为我的代码在第一次运行时可以工作 但当我尝试再次调用它时 它会失败 简而言之 我试图拥有一个可以动态查找给定范围内给定文本的函数 虽然看起来可能有一个
  • R 中的转置和合并列[重复]

    这个问题在这里已经有答案了 对 R 来说相当陌生 我有一个以下格式的数据集 A B C 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 但我想要这种格式 A 1 A 2 A 3 A 4 A 5 B 1 B 2 B 3 etc S
  • CakePHP 错误:无法配置会话,设置 session.auto_start 失败

    我收到此错误 Error CakeSessionException Unable to configure the session setting session auto start failed 我正在使用 Cakephp 2 2 4
  • iOS应用程序如何设置Core蓝牙广告率?

    我运行 iPad 的 iOS 应用程序广告过于频繁 随后似乎向我的嵌入式蓝牙 LE 设备发送垃圾邮件 该设备正在从 iPad 读取广告数据 如何减慢 iPad 的广告速度 Core Bluetooth 中的广告速率不可设置 没有公共 API
  • 将列表分为两列

    我正在尝试构建一个无序列表 如下所示 Item 1 Item 4 Item 2 Item 5 Item 3 Item 6 我有这个 HTML div class multi column ul li Item 1 li li Item 2
  • 如何从(静态)类中的类创建新的类实例?

    我是 Java 新手 有 C 经验 这就是我想做的 public final class MyClass public class MyRelatedClass public class OtherRandomClass public vo
  • Windows 10 - WAMP 橙色

    我已经在我的 Windows 10 企业计算机上安装了 WAMP 64 位服务器 不过我得到了一个橙色图标 我已经检查了以下内容 Apache gt 服务 启动 恢复服务呈灰色 停止服务呈红色 另外测试端口 80 还给了我 您的端口 80
  • 是否可以在 Handlebars #if 中使用函数?

    我有一个控制器对象 如下所示 MyApp objController Ember ArrayController create init function data data isValid function return data val
  • 使用 ejs 重建 webpack-dev-server

    我使用 webpack dev server 进行以下配置 import webpack from webpack import autoprefixer from autoprefixer import ExtractTextPlugin
  • 数据表 - 对多个列应用相同的函数以创建新的数据表列

    我正在使用 data table 包 我有一个数据表 代表用户在网站上的操作 假设每个用户都可以访问一个网站 并对其执行多项操作 我的原始数据表包含操作 每一行都是一个操作 我想将这些信息聚合到一个新的数据表中 并按用户访问进行分组 每次访
  • 错误:使用 Sass 的 Angular 组件中未定义变量

    我遇到此错误 看起来我没有将变量导入到组件中 但这是我的style scss You can add global styles to this file and also import other style files Foundati
  • 自定义文件中的 AppSettings

    我正在努力处理 NET 2 0 中的配置和设置类 如果以下内容包含在名为的文件中app config