将不同的 MyExeName.config XML(项目设置文件)加载到默认文件

本文关键字:文件 设置 加载 默认 项目 MyExeName XML config | 更新日期: 2023-09-27 18:33:23

我看到这个问题多次被问到关于应用程序设置 ASP.NET 样式的问题,其中加载完成,然后代码包含对ConfigurationManager.AppSettings["MySettingHere"]的调用。

..但我的 WinForms 应用程序不使用此方法。相反,它使用项目设置路由(即我调用Properties.Settings.Default.MySettingName来获取我的值,并通过获取项目的属性并选择"设置"选项卡来编辑我的设置(App.config 作为一个文件存在于项目/解决方案的根目录中,但也有 Settings.settings 和 Settings.Designer.cs我认为这些是使用并转换为获取数据的编译代码

本质上,Visual Studio提供了一个围绕设置加载/保存/值获取过程的类型安全包装器,我想做的是提供要加载的设置文件的路径,而不是让它卡在从应用程序目录中获取默认的MyExeName.config文件上

将不同的 MyExeName.config XML(项目设置文件)加载到默认文件

我假设您想从所需位置加载自定义配置文件而不是加载默认配置,然后尝试一下,

注意:一个项目中不能有多个 App.config。该应用程序将使用名为 YourExcecutable.exe.config 的配置文件,该文件由 默认文件应用程序.config。但是您可以进行多重配置 文件,然后根据需要使用代码加载。但你不能保留所有 它们同时加载。您只能在文件之间切换为 你需要。

System.Configuration.ConfigurationFileMap fileMap = new ConfigurationFileMap("path to new file"); 
System.Configuration.Configuration configuration = System.Configuration.ConfigurationManager.OpenMappedMachineConfiguration(fileMap);

OR

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"Config file path");

到目前为止,我找到的唯一解决方案是一个穷人的解决方案。

当我们使用项目属性中的"设置"选项卡时,解决方案将在项目的"属性"节点下获得"设置"、"设置.cs设计器",也可能在项目的根目录中获得一个 app.config。对这些文件的编辑似乎直接由VS本身复制/更新/同步。它还在后台维护一些代码,以确保对这些设置的数据类型访问。可能它基于 Configmanager.AppSetings["propertyName"],但由于 VS 用于设置属性,并且您告诉它是一个 int(或其他什么(,那么 VS 可以编写包装器代码来公开 ProjectNamespace.Properties.Settings.Default.PROPERTYNAME 的命名空间/类/成员链

似乎这段代码依赖于被调用THE_EXE_NAME.exe.config的设置文件,并与EXE本身一起存储。..所以我只是获取我要使用的设置文件,将其复制到存储在磁盘上的设置文件的顶部,然后调用 ProjectNamespace.Properties.Settings.Default.Reload((,它会从新文件中重新加载我想使用的值。我可以想到无数个原因为什么这不理想,但这是我迄今为止所能想到的全部