如何获取其他应用程序的app.config并进行修改

时间:2010-02-15 17:17:51

标签: c# asp.net-3.5

我有两个Windows应用程序。例如,FormA和FormB

FormA的app.config如下

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <appSettings>

    <add key="company" value="DSRC"/>

    </appSettings>

<connectionStrings>

<add name="test" connectionString="Testing Connection String"/>

</connectionStrings>

</configuration>

现在我有另一个名为Form B的应用程序。

我想将表单A的appsettings和connectiontrings检索到表单B.

此外,我应该能够修改这些appsettings和连接字符串,并将其保存到表单A中。

我知道如何检索相同应用程序的appsettings和连接字符串并进行修改。

但我如何获得其他一些应用程序并对其进行修改。

请告诉我。

实际上我在一个设置下运行了4个Windows服务,一个Web服务和一个wcf服务以及一个应用程序。 所有这些都有不同的app.configs,包括不同的appsettings和不同的连接字符串。 我应该创建一个Windows应用程序,它将检索每个设置,然后相应地保存它。

我尝试了这个级别

ExeConfigurationFileMap filename= new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = @"D:\Home\FormA\FormA\bin\Debug\FormA.exe.config";


Configuration config =
   ConfigurationManager.OpenMappedExeConfiguration(filename,
   ConfigurationUserLevel.None);

但是刚刚被击中,我只是不知道如何继续前进(声音愚蠢吧!)

任何人都可以帮我继续前进。

此致 cmrhema

2 个答案:

答案 0 :(得分:2)

基本上,您需要打开其他可执行文件的配置,如下所示:

// full path to other EXE, including EXE extension - but *NOT* .config !!
string otherExePath = @"C:\........\OtherApp\bin\Debug\OtherApp.exe";
Configuration otherConfig = 
              ConfigurationManager.OpenExeConfiguration(otherExePath);

然后您可以访问新otherConfig配置的所有设置:

string otherSetting = otherConfig.AppSettings.Settings["TestSetting1"].Value;

并且您也可以将其保存回来(前提是您拥有该目录的必要权限)。

otherConfig.Save():

答案 1 :(得分:1)

            ExeConfigurationFileMap fileMap2 
                = new ExeConfigurationFileMap();
            fileMap2.ExeConfigFilename = @"OtherFile";

            Configuration config2 =
              ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);

            ConnectionStringSettings newSettings = 
                config.ConnectionStrings.ConnectionStrings["oldSConString"];

            ConnectionStringsSection csSection 
                = config2.ConnectionStrings;

            csSection.ConnectionStrings.Add(newSettings);                
            config2.Save(ConfigurationSaveMode.Modified);

<强> VS2005 C# Programmatically change connection string contained in app.config