通过C#读取WPF应用程序中另一个应用程序的配置文件

时间:2017-08-02 04:37:54

标签: c# wpf config app-config

在我的WPF应用程序(C#,。Net Framework 4.5)中, 我需要阅读另一个应用程序配置文件。

         var configFileMap = new ExeConfigurationFileMap
            {
                ExeConfigFilename = "ChildApp.exe.config"
            };

          // Configuration object
          Configuration libConfig = 
           ConfigurationManager.OpenMappedExeConfiguration(configFileMap, 
            ConfigurationUserLevel.None);

            // Get the section
            section = (libConfig.GetSection("appSettings") as 
                        AppSettingsSection);
            // Getting the value
            configValue = section.Settings["DBServer"];

但是configValue什么都没有,因为在Setting字典中没有这样的值。      我也试过使用" userSettings"与在配置文件中一样,节名称是。

section = (libConfig.GetSection("userSettings") as 
                        AppSettingsSection);

在这种情况下,我在"部分"值。

这是我的配置文件

 <?xml version="1.0" encoding="utf-8" ?>
  <configuration>
  <configSections>
    <sectionGroup name="userSettings" 
    type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, 
 Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        <section name="ChildApp.Properties.Settings" 
 type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, 
 Culture=neutral, PublicKeyToken=b77a5c561934e089" 
  allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
 </configSections>
 <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
 </startup>
 <userSettings>
    <ChildApp.Properties.Settings>
        <setting name="DBServer" serializeAs="String">
            <value>MyServer</value>
        </setting>
        <setting name="Database" serializeAs="String">
            <value>MyDatabase</value>
        </setting>
        <setting name="DBUser" serializeAs="String">
            <value>sa</value>
        </setting>
        <setting name="DBPassword" serializeAs="String">
            <value>password123</value>
        </setting>
        <setting name="ErrorReportingEmail" serializeAs="String">
            <value>helpdesk@mydomain.com</value>
        </setting>
    </ChildApp.Properties.Settings>
    </userSettings>
    </configuration>

我用谷歌搜索但找不到任何有效的解决方案。 你能帮我弄清楚出了什么问题吗? 感谢。

2 个答案:

答案 0 :(得分:0)

您可以获得以下用户设置: -

var user = (ConfigurationSection)ConfigurationManager.GetSection("userSettings");

答案 1 :(得分:0)

XDocument xdoc = XDocument.Load(@"C:\Users\Administrator\Documents\Visual Studio 2013\Projects\MyProject\MyProject\bin\MyProject.dll.config");
            var p = xdoc.Element("configuration").Element("userSettings").Elements();
            foreach (XElement item in p)
            {
                if(item.FirstAttribute.Value == "DBServer")
                {
                    string dbserver = item.Value;
                }

            }

将配置文件加载到XDoc中并像上面一样进行解析。你可以得到你想要的任何领域。

此处需要添加using System.Xml.Linq;