2017-08-02 78 views
-1

我需要讀取另一個應用程序配置文件。在我的WPF應用程序(C#,.Net Framework 4.5), 中讀取WPF應用程序中的另一個應用程序的配置文件

  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沒有得到任何東西,因爲在設置字典中沒有這樣的值。 我也嘗試通過使用「userSettings」在配置文件中,部分名稱是。

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

在這種情況下,我在「section」值中得到空值。

這裏是我的配置文件

<?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>[email protected]</value> 
     </setting> 
    </ChildApp.Properties.Settings> 
    </userSettings> 
    </configuration> 

我用Google搜索,但沒有找到該工程的任何解決方案。 你能幫我弄清楚什麼是錯的。 謝謝。

回答

0

你可以得到這樣的usersettings: -

var user = (ConfigurationSection)ConfigurationManager.GetSection("userSettings"); 
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;