在我的项目中,我有一个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中动态添加元素。通过配置管理器将新密钥添加到AppSettings部分中,它可以很好地工作:
ConfigurationManager.AppSettings.Set("UserID ", " user ");
但是当我想使用section时,我陷入了困境;我无法即时将部分添加到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);
你们对解决这个问题有任何想法吗?
谢谢!