none
Configuration.FilePath与ConfigurationManager.OpenExeConfiguration参数不对应的问题 RRS feed

  • 问题

  • 使用onfigurationManager.OpenExeConfiguration打开自定义配置文件时,要求传入完整的配置文件名称(带类型后缀),如已存在配置文件ConfigText.config,则:

    Configuration Config = System.Configuration.ConfigurationManager.OpenExeConfiguration("ConfigTest.config");

     

    可是使用Configuration.Save保存配置时,却发现修改后的配置被保存到一个新建的ConfigText.config.config中了。调试发现Configuratio对象创建出来后其FilePath就被置成 ConfigText.config.config了。

     

    请教这个是什么问题.....

    2010年4月24日 9:14

答案

  • 你好!

         可以看看这篇博客:

    http://www.cnblogs.com/telephoner/archive/2008/07/17/1245437.html

         希望对你有帮助!


    周雪峰
    • 已标记为答案 泉子 2010年4月28日 2:08
    2010年4月27日 11:28
    版主

全部回复

  • 你好 這個方法就是這樣的

    比如  string exePath = System.IO.Path.Combine(
            Environment.CurrentDirectory, "ConfigurationManager.exe");
        // Get the configuration file.
        System.Configuration.Configuration config =
          ConfigurationManager.OpenExeConfiguration(exePath);

    這裡是獲取ConfigurationManager.exe這個可執行文件的配置文件 ConfigurationManager.exe.config


    I see you~http://hi.baidu.com/1987raymondMy Blog~~~
    2010年4月25日 14:28
    版主
  • 你的意思是OpenExeConfiguration参数不应带参数后缀了,不过何我这么使用时提示找不到文件
    2010年4月25日 14:43
  • 你的意思是OpenExeConfiguration参数不应带参数后缀了,不过何我这么使用时提示找不到文件


    你好 我新建了一個winform的測試項目 WindowsFormsApp

    項目添加一個應用程序配置文件App.config 內容如下

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <appSettings>
        <add key="test" value="Test Value"/>
      </appSettings>
    </configuration>

    通過下麵的這段代碼是可以讀取的

    string exePath = System.IO.Path.Combine(Environment.CurrentDirectory, "WindowsFormsApp.exe");
                // Get the configuration file.
                Configuration config = ConfigurationManager.OpenExeConfiguration(exePath);
                AppSettingsSection appSettings = config.Sections["appSettings"] as AppSettingsSection;
                MessageBox.Show(appSettings.Settings["test"].Value);

     

    在bin的debug文件夾下會生產對應的 WindowsFormsApp.exe.config 內容與app.config一致

     

     


    I see you~http://hi.baidu.com/1987raymondMy Blog~~~
    2010年4月26日 2:24
    版主
  • 你好!

          这里MSDN的文档对我们存在一定的误导:

    System.Configuration.ConfigurationManager.OpenExeConfiguration("ConfigTest.exe");

          这里的参数应该是可执行文件的路径,而不是配置文件的路径!

          此处英文的文档也是错误的,并不是翻译的问题!


    周雪峰
    2010年4月26日 13:07
    版主
  • 哦?但是我的可执行文件并不是ConfigTest.exe。而且

    Configuration Config = System.Configuration.ConfigurationManager.OpenExeConfiguration("ConfigTest.config");

    确实能打开此配置文件

    2010年4月26日 14:00
  • 你好!你打开的应该是ConfigText.config.config
    周雪峰
    2010年4月27日 2:20
    版主
  • 打开时并不存在ConfigText.config.config文件,而根据:

    Configuration Config = System.Configuration.ConfigurationManager.OpenExeConfiguration("ConfigTest");

    的执行异常“指定的文件不存在”,可知OpenExeConfiguration只能打开已经存在的文件,所以打开的应该不是ConfigText.config.config。

     

    找遍网上居然都没找到一个WinForm平台的示例,哎,微软有时实在让人太崩溃...

    2010年4月27日 2:26
  • 你好!

         可以看看这篇博客:

    http://www.cnblogs.com/telephoner/archive/2008/07/17/1245437.html

         希望对你有帮助!


    周雪峰
    • 已标记为答案 泉子 2010年4月28日 2:08
    2010年4月27日 11:28
    版主
  • 嗯,我明白了,看来不管是原本设计就有问题,还是大家都不会用,这个函数的使用总是存在问题。

    谢谢了!

    2010年4月28日 2:07