.net - 获取任何 .net 应用程序的 user.config 文件的位置

标签 .net visual-studio

我有一个将设置保存到 user.config 文件的主应用程序。

我有第二个应用程序需要从此文件中读取设置。

有没有一种简单/优雅的方法来获取主应用程序的 user.config 文件的位置?

我想我可以手动建立路径

[Application.LocalUserAppDataPath][CompanyName][AppName + some sort of guid][App version]



但这似乎非常hacky。

最佳答案

创建用户配置文件所在位置的路径的逻辑通常内置于应用程序中,尤其是部分

[CompanyName][AppName + some sort of guid][App version]

所以没有通用的方法来询问存储用户配置的框架。

但是,我们通过为所有包含此类功能的应用程序提供一个通用 DLL 来为我们的程序系统解决了这个问题
static Configuration GetMainConfig()
{
    string mainPgmConfigDir = GetMainProgramConfigDir();
    ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
    configFile.ExeConfigFilename = Path.Combine(mainPgmConfigDir, "user.config");
    return ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None);
}

static string GetMainProgramConfigDir()
{
    string appDataDir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
    string companyDir = Path.Combine(appDataDir, VersionInfo.Company);
    string productDir = Path.Combine(companyDir, "yourProgramName");
    string versionDir = Path.Combine(productDir, "yourVersionNumber");
    return versionDir;
}

此功能为您的所有应用程序提供相同的用户配置。

关于.net - 获取任何 .net 应用程序的 user.config 文件的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5219273/

相关文章:

c# - 序列化/反序列化的 XML 与二进制性能

c# - 导出到excel打开它

asp.net - 无法在Web服务器上启动调试。远程服务器返回错误:(404)找不到。在Visual Studio中启动调试时出错

c# - 我可以在 app.config 中参数化 log4net Appender 的类型名称吗?

c# - Visual Studio C# 命名空间和程序集

c# - 跨平台开发

asp.net - SignalR 和加入组

mysql - 带有 MYSQL 的 Entity Framework 6(Visual Studio 开发 > Visual Studio 集成)

javascript - 如何使用 Visual Studio 配置 Bower?

visual-studio - 使用 VS 2015 RC 的链接器错误,找不到与 std::codecvt 相关的符号