如何使用.NET配置文件

.NET程序配置文件操作 本文介绍了如何在.NET中加载配置文件,并演示了读取、修改、添加和删除配置项的示例代码。通过合理使用配置文件,您可以灵活地管理应用程序的行为和设置,从而提高应用程序的可配置性和可维护性。在.NET应用程序开发中,配置文件是一种常见的方式,用于存储应用程序的设置和参数。配置文件通常使用XML格式,并包含键值对的集合,用于配置应用程序的行为。上述代码中,我们通过键访问特定的配置项,并使用赋值操作修改其值。属性来获取配置项的集合,然后通过键来访问特定的配置项,并使用。方法添加一个新的配置项,并指定其键和值。 阅读详情

    .NET的应用程序配置文件,使用的是XML格式。相对INI文件来说,它的功能要强上不少,而且具有很强的可扩展性。它的缺点是不能直接进行写操作,也就是说,不能直接在程序中修改配置文件的数据(当然不是指不能,不过不是本文讨论的范围)。本文主要目的是探讨如何扩展配置文件,并在其加入各种自定义配置信息。
   
    1. 使用<appSettings>
        简单的配置信息,可以直接放入<appSettings>标记中。如:
<?xml version="1.0" encoding="utf-8"?>
  <appSettings>
 <add key="LogFile" value="d:/log/debug.log"/>
  </appSettings> 
</configuration>
        相应访问代码如下:       
string fileName = System.Configuration.ConfigurationSettings.AppSettings.Get("LogFile");
 
    2. 自定义配置节(section)名称
        比如,我们要使用下面的配置结构,将配置信息归类分组:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- 需要在此处加入自定义配置声明 -->
<!-- 以下是自定义配置的内容 -->
<myConfig>
  <myDictionary>
    <add key="Area" value="Fuzhou"/>
    <add key="Device" value="Printer"/> 
    <add key="Customer" value="Muf"/>
  </myDictionary>
  <myNameValue>
    <add key="Area" value="Fuzhou"/>
    <add key="Device" value="Printer"/> 
    <add key="Customer" value="Muf"/>
  </myNameValue>
  <myInfo
    Area="Fuzhou" Device="Printer" Customer="Muf"
  />
</myConfig>
</configuration>

        但是这样是不行的。我们必须要在配置文件前面加入声明:
  <!-- 以下是自定义配置的声明 -->
  <configSections>
    <sectionGroup name="myConfig">
         <section name="myDictionary"
            type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <section name="myNameValue"
            type="System.Configuration.DictionarySectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <section name="myInfo"
            type="System.Configuration.SingleTagSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </sectionGroup>
  </configSections> 

        把这一段放入配置文件中,我们的配置结构就可以正常使用了。声明中,<sectionGroup>用来定义不含配置数据的节的名称。<section>用来定义含有自定义配置数据的节的名称。<section type>用来指定定义配置数据的类型。.NET已经定义了3种配置类型:
  a. NameValueSectionHandler
        相应访问代码如下:        
NameValueCollection myNameValue= (NameValueCollection)System.Configuration.ConfigurationSettings.AppSettings.Get(@"myConfig/myNameValue");
string Area = myNameValue["Area"];
string Device= myNameValue["Device"];
string Customer = myNameValue["Customer "];

  b. DictionarySectionHandler
        相应访问代码如下:        
Hashtable myNameValue= (Hashtable)System.Configuration.ConfigurationSettings.AppSettings.Get(@"myConfig/myDictionary");
string Area = myNameValue["Area"];
string Device= myNameValue["Device"];
string Customer = myNameValue["Customer "];

  c. SingleTagSectionHandler
        相应访问代码如下:        
Hashtable myNameValue= (Hashtable)System.Configuration.ConfigurationSettings.AppSettings.Get(@"myConfig/myInfo");
string Area = myNameValue["Area"];
string Device= myNameValue["Device"];
string Customer = myNameValue["Customer "];

        这三种类型的详细信息,可以参考 MSDN 文档。同时.NET 还定义了IgnoreSectionHandler类型,为 System.Configuration 之外的系统所读取和处理的配置节提供节处理程序定义。
        除此之外,.NET提供了IConfigurationSectionHandler接口,这样我们还可以自行进行扩展,以设计出我们自已的配置形式。

  3. 自定义配置结构 (使用IConfigurationSectionHandler)
 假设有以下的配置信息,其在MyInfo可以重复许多次,那么应如何读取配置呢?这时就要使用自定义的配置程序了。
<myConfigs>
  <myInfo Area="Fuzhou" Device="Printer" Customer="Muf" />
  <myInfo Area="Shanghai" Device="Mobile" Customer="Liny" />
</myConfig>
 访问代码如下:
Hashtable cfgTable = (Hashtable)ConfigurationSettings.GetConfig( "myConfigs" );

Debug.Assert( cfgTable.Count == 2);
Hashtable cfgFuzhou = (Hashtable)cfgTable["Fuzhou"];
Hashtable cfgShanghai = (Hashtable)cfgTable["Shanghai"];
Debug.Assert( cfgFuzhou["Device"] == "Printer" );
Debug.Assert( cfgShanghai["Device"] == "Mobile" );
Debug.Assert( cfgFuzhou["Customer"] == "Muf" );
Debug.Assert( cfgShanghai["Customer"] == "Liny" );

foreach(Hashtable cfg in cfgTable.Values)
{
 Console.WriteLine("Area={0} Device={1} Customer={2}", cfg["Area"], cfg["Device"], cfg["Customer"]);
}

 为了能使用上面的访问代码来访问配置结构,我们需要生成一个特定的配置读取类(ConfigurationSectionHandler),例子很简单,就不多做说明了:
public class MyInfoSectionHandler: IConfigurationSectionHandler
{
 public object Create(object parent, object configContext, System.Xml.XmlNode section)
 {
  Hashtable config = new Hashtable();
  foreach(XmlNode node in section.ChildNodes)
  {
   if(node.Name != "myInfo")
    throw new System.Configuration.ConfigurationException("不可识别的配置项", node);

   Hashtable item = new Hashtable();
   foreach(XmlAttribute attr in node.Attributes)
   {
    switch(attr.Name)
    {
     case "Area":
     case "Device":
     case "Customer":
      item.Add(attr.Name, attr.Value);
      break;
     default:
      throw new System.Configuration.ConfigurationException("不可识别的配置属性", attr);
    }
   }
   config.Add(item["Area"], item);
  }
  return config;
 }
}

 然后,我们再定义配置说明。其中,myNamespace.MyInfoSectionHandler 是MyInfoSectionHandler类的带名字空间的完整名称;myApp 则是定义MyInfoSectionHandler类的程序集不带扩展名的名字(如myApp.dll或myApp.exe):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!-- 以下是自定义配置的声明 -->
  <configSections>
      <section name="myConfig" type="myNamespace.MyInfoSectionHandler, myApp" />
  </configSections>   
  <myConfigs>
    <myInfo Area="Fuzhou" Device="Printer" Customer="Muf" />
    <myInfo Area="Shanghai" Device="Mobile" Customer="Liny" />
  </myConfig>
</configuration>

 根据上面的例子,我们可以使用IConfigurationSectionHandler来实现任意的配置文件结构。

 

读取配置文件:使用 .NET 进行 NetCore 基础的配置文件读取 在这个示例中,我们使用配置对象的索引器来读取配置值。在这里,我们使用 “AppSettings:Setting1” 和 “AppSettings:Setting2” 分别读取了配置项的值,并将其打印到控制台。通过将应用程序的设置和参数存储在配置文件中,并使用配置对象进行读取,我们可以实现更好的代码分离和灵活性。在这个示例中,我们有一个名为 “AppSettings” 的配置部分,其中包含两个设置项 “Setting1” 和 “Setting2”,分别对应的值是 “Value1” 和 “Value2”。 阅读详情

相关推荐

NSFC结题报告下载脚本失效?3步教你手动修复下载按钮问题(2024最新版)

针对NSFC官网域名变更导致结题报告下载脚本失效的问题,本文提供了详细的手动修复指南。通过三步操作,教你如何修改用户脚本的域名匹配规则,恢复下载按钮功能,确保NSFC结题报告下载器能继续高效工作。

vscode6remote的博客 751

.NET程序配置文件

配置文件是标准的XML文件,可以用来更改应用程序的设置和设置策略。.NET框架的配置模式由元素组成,你可以在配置文件中使用这些元素来控制应用程序的行为表现。本节的内容表将反映了启动、运行时、网络和其它类型配置设置项的架构层次结构。那什么是配置文件的架构呢?说一说我的理解,首先.NET平台下可以开发各种类型的程序(Web的、桌面的、移动端的等等)。在这些不同类型程序的工程中,用到的配置文件在内容和组织形式上有所不同。那每种工程更适合怎样的内容/形式的配置文件呢?............

三千幻想乡 2584

(MATLAB)一维信号峰值检测findpeaks

一维信号波峰波谷检测,峰值、峰宽、到达时间计算。MATLAB自带的findpeaks函数能完成这一任务,在这里分享其基本用法与特殊用法。

HPC_ZY 2万+

.NET 7 文件系统与配置选项

NET 7 在文件系统操作和配置管理方面带来了许多重要的改进。从性能优化到跨平台支持,再到多样化的配置选项,这些增强功能使得开发者能够更加高效和灵活地开发应用程序。无论是处理大文件还是管理复杂的配置,.NET 7 都为开发者提供了强大的工具和功能,助力现代应用程序的开发。

hy_4377的博客 538

YOLOv8 轴承缺陷检测 使用YOLOv8进行训练、评估和可视化预测结果 包含1440张图片的轴承缺陷检测数据集 YOLO格式或XML格式

本文介绍了一个基于YOLOv8的轴承缺陷检测项目。数据集包含1440张图片,标注了4类缺陷(凹槽、凹陷、卡伤、划痕),按8:1:1比例划分为训练集(1152张)、验证集(144张)和测试集(144张)。标注文件支持YOLO格式和XML格式,可直接用于模型训练。项目实现了数据准备、模型训练、评估及可视化预测结果的全流程,使用YOLOv8n预训练模型进行50个epoch的训练,并提供了数据格式转换(XML转YOLO)的代码示例。最终模型可自动检测轴承表面缺陷,并保存预测结果。

OICQQ67658008的博客 1440

[Bug已解决] CUDA error 尽管 CUDA 可用且 GPU 受支持-通用排查 RuntimeError 解决方案

[Bug已解决] CUDA error 尽管 CUDA 可用且 GPU 受支持-通用排查 RuntimeError 解决方案

一键难忘的博客 2415

NET2.0的配置文件

很长时间没写blog了,这两天在看配置文件。NET2.0的配置文件很方便,无论做什么程序都会用到。但领导要求在dll中使用配置文件,我闲来无事想在项目开始之前做一些试验。发现如果在dll中使用默认的exe.config文件,在调用dll的客户端会带来冲突。就是客户端无法分辨哪个是dll的配置文件,哪个是应用的配置文件。结果是dll在应用的配置文件中完成查询、添加配置的操作。我翻看了msdn,才发现

刘卓的专栏 2835

路径规划 | 图解A*、Dijkstra、GBFS算法的异同(附C++/Python/Matlab仿真)

图解A*、Dijkstra、GBFS算法原理,分析三种算法异同,提供C++/Python/Matlab仿真实现

FRIGIDWINTER的博客 2万+

vb.net配置文件的使用

机房收费系统个人版中大家都使用了配置文件,主要用于配置数据库的连接字符串。将连接字符串从代码中独立出来存储于配置文件中的好处是:可以灵活的连接不同的数据库实例。事实上,如果以参数的方式也可以实现类似的功能。但是当连接实例改动时,配置文件方式的改动要比参数方式来的更简便安全。        使用配置文件时是否注意当你改变连接字符串时,甚至不需要重新编译?这是因为当程序启动时才将配置文件的内容读取到

忠麦一生 4359

海思3516DV300智能算法实现

海思3516DV300智能算法实现

xiaoning132的专栏 936

图像紫边消除(depurple)

对图像紫边形成原因、消除方法进行了介绍。

沧海一升的博客 7565

.NET 配置文件简单使用

当我们开发系统的时候要把一部分设置提取到外部的时候,那么就要用到.NET的配置文件了。比如我的框架中使用哪个IOC容器需要可以灵活的选择,那我就需要把IOC容器的设置提取到配置文件中去配置。实现有几种方法。 1.使用appSettings 这个是最简单的可以设置和读取的用户设置 程序中可以用key去读取:string objContainer = Configuration...

andy930606的博客 151

Halcon算子知识:optical_flow_mg

光流(Optical Flow)是一种研究图像对齐的算法,一般包括两大类:稀疏光流和稠密光流。稀疏光流就是研究图像中稀疏点的光流,这些点一般是角点;稠密光流则是研究图像中所有点的偏移量。以下介绍halcon的基本光流算子optical_flow_mg的原理方法。该算子计算两个图片的光流法。 二、算子说明 optical_flow_mg(ImageT1, ImageT2 : VectorField : Algorithm, SmoothingSigma, Integration

gongdiwudu的专栏 1万+

.NET配置文件的原因、位置和方式

目录 介绍 为什么 位置 机器配置 应用配置 用户设置 其他配置 方式 应用设置部分 connectionStrings部分 applicationSettings和userSettings部分 升级设置 接下来是什么 进一步阅读 更新:本文中的大部分信息现已过时。首选的配置机制现在位于Microsoft.Extensions.Configuration NuGet 包和相关包中。有关更多详细信息,请参阅此链接中的ConfigurationBuilder类文档。 介绍 我已

寒冰屋的专栏 2063

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【转】如何使用.NET配置文件(一)

  【转】如何使用.NET配置文件(一) 收藏 document.body.oncopy = function() { if (window.cl

个人开发记录 622

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

.Net Remoting配置文件的用法

 How to use .Net Remoting Configuration files  .NET Remoting configuration files allow you to specify parameters for most aspects of the remoting framework. These files can define tasks as s

冷枫@优快云 2128

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

如何使用.net配置文件

注意:此文来源于http://ly4cn.cnblogs.com/archive/2005/09/06/231245.html 如何使用.NET配置文件 .NET的应用程序配置文件,使用的是XML格式。相对INI文件来说,它的功能要强上不少,而且具有很强的可扩展性。它的缺点是不能直接进行写操作,也就是说,不能直接在程序中修改配置文件的数据(当然不是指不能,不过不是本...

baiduopin4043的博客 111

使用ASP.NET Core 配置文件

前言 在ASP.NET ,我们使用XML格式的.Config文件来作为配置文件,而在ASP.NET Core,我们有了更多的选择,可以用回XML,也可以用Json、Ini文件作为配置文件 Json配置文件的使用 在创建ASP.NET Core的项目的时候,框架会自动添加appsettings.json文件和添加IConfiguration的注入。 public Startup(IConfigu...

MDZZ666的博客 411

在.NET中自定义配置文件

目录摘要 配置文件结构 读取配置 管理配置 总结摘要使用Microsoft.NET开发一个项目时,可能包含了Windows应用程序、Web应用程序、Web Service、Windows Service等多种应用。如果您想使这几个应用程序使用同一个配置(比如同一个数据库连接),而又不想重复编写不同的配置文件。那么.NET提供的配置文件方案可能就不能达

杂文 1278

.NET配置文件中configSections的用法

.NET配置文件中configSections的用法

LHL62411570的专栏 911

用vb.net读取INI配置文件的方法,使用API

因为对XML前不了解,所以对XML方式来做配置文件我都不能很好的实现但为了应行,只有先使用INI的文来记录了也就沿用了VB6里的INI文读取方法 '声明INI配置文件读写API函数PrivateDeclareFunctionGetPrivateProfileString()FunctionGetPrivateProfileStringLib"kernel32"...

349
上一篇: Request.ServerVariables参数集
下一篇: vs 2008 不能切换到设计视图的解决办法
lenoval
博客等级 码龄19年 6粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值