弄明白configurationManger这个类的修改

来源:互联网 发布:apache干什么用的 编辑:程序博客网 时间:2024/05/14 17:05
 

         首先愤怒一下网上大部分的关于app.config文件的操作都只是讲了一下如何操作,但是表现结果并没有说!搞得我这种超级新手无奈了好一阵子!

//修改appconfig中的"appSettings"

     Dim config As System.Configuration.Configuration = _
       ConfigurationManager.OpenExeConfiguration( _
       ConfigurationUserLevel.None)//打开默认的系统配置文件,如果是在开发平台下则打开app.config而对应的exe则是XXX.exe.config文件.这个得明确!

          Dim appsection As AppSettingsSection = config.GetSection("appSettings")
          appsection.Settings(section).Value = sectionValue
          config.Save(ConfigurationSaveMode.Modified)
          ConfigurationManager.RefreshSection("appSettings")//只有刷新了这个方法才能让下次存在于内存什么地方的系统类刷新修改过的section。

这里要说几个问题:1上述的方法虽然说是修改了配置文件,但是你如果在运行平台下操作的话,你会发现你IDE下的和debug目录下的那两个配置文件都没有被修改过,但是不用担心,你可以假设被修改过依然进行操作,运行的时候不会出问题.

2那么什么时候配置文件才会被修改呢!只有一种情况,你如果直接运行你的debug目录下的exe文件那么你会发现你的debug目录下的那个配置文件被修改了!但是如果你重新编译一下你的运行平台会发现你的exe文件所对应的那个配置文件又再次被运行平台下的配置文件所替换掉了!.

因此我们可以发现其实关于configurationmanager这个类对配置文件的写操作实际上是这样操作的。首先在运行平台下的类对配置文件的操作都是假设在直接对exe文件对应的配置文件的操作,但是由于没有运行exe文件所以不会直接修改那个文件.但是由于build以后系统会建立一个exe文件,并且将app.config文件复制成XXX.exe.config然后作为exe的配置文件,紧接着运行exe文件以后任何对配置文件的操作都会实际的体现出来!所以可以证明一件事情!任何针对于在运行时刻对源程序代码的修改都绝对不可能的,包括app.config文件.也有人说可以用DOM模型来解释app.config文件,那样做其实是在build以后将程序的app.config文件当成了一个外部文件来使用而不是真正的修改了对应的配置文件.

附加一段对connectionstring的修改

   Dim config As System.Configuration.Configuration = _
     ConfigurationManager.OpenExeConfiguration( _
     ConfigurationUserLevel.None)

         Dim appsection As ConnectionStringsSection = config.GetSection("connectionStrings")
         appsection.ConnectionStrings("DataAccessSQL").ConnectionString = connectionString
         config.Save(ConfigurationSaveMode.Modified)
         ConfigurationManager.RefreshSection("connectionStrings")

 

      

原创粉丝点击