В моем приложении 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 ничего не получает, потому что в словаре настроек нет такого значения. Я также пробовал использовать "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 ответа
Вы можете получить следующие пользовательские настройки: -
var user = (ConfigurationSection)ConfigurationManager.GetSection("userSettings");
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;
.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.