问题描述
简而言之,我试图修改另一个应用程序的配置文件。我有2个应用,App A和AppB。 App A需要更改App B的配置文件。如何通过更新如下所示的配置文件中的applicationSettings部分来进行操作?
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<applicationSettings>
<Sample.Settings1>
<setting name="DBUser" serializeAs="String">
<value>sa</value>
</setting>
<setting name="DBPass" serializeAs="String">
<value>Sample12345</value>
</setting>
<setting name="DBServer" serializeAs="String">
<value>.\SQL2017</value>
</setting>
<setting name="DBCatalog" serializeAs="String">
<value>SMPL</value>
</setting>
</Sample.Settings1>
</applicationSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/></startup></configuration>
这是我在运行应用程序A时将其添加到其中的方式。但是应用程序B使用applicationSettings值而不是AppSettings值。
enter code here
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="server" value=".\SQL2017" />
<add key="catalog" value="SMPL" />
<add key="UserID" value="sa" />
<add key="Pwd" value="Sample12345" />
</appSettings>
<applicationSettings>
<Sample.Settings1>
<setting name="DBUser" serializeAs="String">
<value>sa</value>
</setting>
<setting name="DBPass" serializeAs="String">
<value>Sample12345</value>
</setting>
<setting name="DBServer" serializeAs="String">
<value>.\SQL2017</value>
</setting>
<setting name="DBCatalog" serializeAs="String">
<value>SMPL</value>
</setting>
</Sample.Settings1>
</applicationSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/></startup></configuration>
解决方法
我认为这是您正在寻找的非常简单的示例。
var pathToConfig = @"C:\somepath";
// Using ExeConfigurationFileMap so you can grab the app.config directly.
// Load the config based on the path
var configMap = new ExeConfigurationFileMap { ExeConfigFilename = pathToConfig };
var config = ConfigurationManager.OpenMappedExeConfiguration(configMap,ConfigurationUserLevel.None);
//Make whatever changes you want in code here
var s = config.Sections.Get("applicationSettings");
// cast s to whatever section type you want,make changes,and then save.
// Save it,either back to where you found it,or somewhere else
config.SaveAs(pathToConfig);
或者,您可以将其作为XML加载,进行处理,然后将其写回。