我是否可以将.NET app.config文件驻留在应用程序目录之外

时间:2012-08-29 17:10:59

标签: c# .net c#-4.0 configuration

我正在努力满足客户要求,我正在编写的Windows窗体应用程序将安装到C:\ program files \ xxx,并将在一个帐户下运行,该帐户不具有写入c:\ program files的权限\ xxx目录。因此,这意味着我的配置文件需要位于其他位置,以便用户可以对其进行手动更改,我的应用可以对其进行更改。

我还没有发现这样做?我希望我可以使用configSource,但这有限制,外部配置文件应该与应用程序在相同的相对物理路径上,这对我没有好处。 appSettings文件属性可以使用,但这仅适用于该配置部分。我使用其他配置部分,如连接字符串和system.serviceModel。关于我的选择在哪里的任何想法?

谢谢!

2 个答案:

答案 0 :(得分:5)

Applications Settings框架自动处理用户范围的设置。

您可以将默认设置放在app.Config文件中,并提供一种机制(在您的程序中)来编辑设置。任何编辑都将自动写入用户的文档文件夹中的用户特定设置文件(具有写入权限)。没有必要让每个用户直接写入实际app.Config

只需在<userSettings>元素中包含“可写”设置默认值,框架就会按照正确的Windows指导原则为您处理它。

答案 1 :(得分:0)

尝试以下代码


    private static XmlDocument loadConfigDocument()
    {
        XmlDocument doc = null;
        try
        {
            doc = new XmlDocument();
            doc.Load(getConfigFilePath());
            return doc;
        }
        catch (System.IO.FileNotFoundException e)
        {
            throw new Exception("No configuration file found.", e);
        }
    }

    private static string getConfigFilePath()
    {
        return Assembly.GetExecutingAssembly().Location + ".config";
    }