代码之家  ›  专栏  ›  技术社区  ›  Nissim

ConfigurationManager在不同的系统上查找不同的文件

  •  2
  • Nissim  · 技术社区  · 14 年前

    我以最简单的方式使用configuration manager:

    阅读:

    ConfigurationManager.AppSettings["Foo"]
    

    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    config.AppSettings.Settings["Foo"].Value = value;
    config.Save(ConfigurationSaveMode.Modified);
    ConfigurationManager.RefreshSection("appSettings");
    

    问题是,在不同的机器上安装应用程序后,有些人正在查找文件:“My.Application.exe.config" 而其他人在寻找”My.Application.config“(相同,不带“.exe”)

    另一个有趣的细节是,在有问题的机器上安装VS之后,它工作正常。

    我的问题是:啊?!!? 有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  0
  •   Nissim    14 年前

    由于这是一个.NET问题(如上面的链接所述),我从不同的角度来处理它: 因为我的配置文件很大,需要读写操作,所以我使用一个特殊的类来处理它- configurationFileHelper .

    我所做的是向这个类添加一个静态构造函数,在这个类中,我查询文件的预期名称,如果需要,重命名现有文件以匹配它:

        static configurationFileHelper()
        {
            try
            {
                string fullFilename = Application.ProductName + ".exe.config";
                string expectedFilename = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath;
                if (!File.Exists(expectedFilename) && (File.Exists(fullFilename))
                        File.Move(fullFilename, expectedFilename);
            }
            catch { ; }
        }