0

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

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

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

4

2 回答 2

0

I assume you want to load custom configuration file from desired location rather than loading the default config, then try this,

NOTE : You can't have more than one App.config in a project.The app will use the config file named YourExcecutable.exe.config which is by default the file App.config. But you can have multipe configuration files and load then as you need using code. But you can't keep all of them loaded at the same time. you can only switch between the files as you need.

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");
于 2013-10-01T06:30:58.550 回答
0

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

当我们使用项目属性中的“设置”选项卡时,解决方案将在项目的“属性”节点下获得一个 Settings.Settings、Settings.Designer.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() ,它会从新文件中重新加载我想要使用的值。我可以想出无数个为什么这不理想的原因,但到目前为止我所能想到的就是这一切

于 2013-10-02T08:57:38.113 回答