在我的项目中,我有一个 App.config 用于存储所有配置。我使用了几个部分来获得一个干净易读的 App.config 文件。每个部分处理一个特定的控制器。这是我的文件中的一个示例:
<configuration>
<configSections>
<section name="applicationConfiguration" type="System.Configuration.NameValueSectionHandler" />
<section name="databaseConfiguration" type="System.Configuration.NameValueSectionHandler" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<ApplicationConfiguration/>
<DatabaseConfiguration>
<add key="UserID" value="user"/>
<add key="Password" value="pwd"/>
</DatabaseConfiguration>
</configuration>
它在我的项目中完美运行,但问题出在 project.test 上。我尝试在测试项目中复制 app.config(并在属性中选择«始终复制»),但它并没有改变任何事情。App.config 文件存在于测试项目的 Bin/Debug 中,但对于测试,它不存在。
所以我尝试在 App.config 中动态添加元素。通过 Configuration Manager 向 AppSettings 部分添加新密钥,它可以很好地工作:
ConfigurationManager.AppSettings.Set("UserID ", " user ");
但是当我想使用sections时我被卡住了;我无法将部分动态添加到 ConfigurationManager。这是我所在的位置:
System.Configuration.Configuration tempConfig = (System.Configuration.Configuration) ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
dbConfig = new NameValueCollection();
dbConfig.Add("UserID ", "user");
dbConfig.Add("Password ", "pwd");
tempConfig.Sections.Add("DatabaseConfiguration ", (ConfigurationSection) dbConfig);
你们有任何想法如何解决这个问题吗?
提前致谢 !