我有一个自定义let jsonString = String(data: jsonData, encoding: .utf8)!
文件位于下方,希望读取.config
的值并进行更新。我可以去ServerUrl
,但不知道如何进入AutoUpdate
。
.CONFIG:
Settings -> ServerUrl
代码:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="AutoUpdate">
<section name="Settings" type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</configSections>
<AutoUpdate>
<Settings>
<add key="Enabled" value="True" />
<add key="ForceActivation" value="True" />
<add key="Environment" value="Prod" />
<add key="ServerUrl" value="https://Something.xml" />
<add key="HourToCheckAutoUpdate" value="1" />
</Settings>
</AutoUpdate>
</configuration>
答案 0 :(得分:2)
更新 .Config 文件以使用&#39; AppSettingsSection&#39;:
<section name="Settings" type="System.Configuration.AppSettingsSection" />
使用以下代码获取属性:
var configMap = new ExeConfigurationFileMap();
configMap.ExeConfigFilename = @"MyPath\My.config";
var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
var settingsSection = (AppSettingsSection) config.GetSection("AutoUpdate/Settings");
var enabled = settingsSection.Settings["Enabled"].Value;
var serverUrl = settingsSection.Settings["ServerUrl"].Value;
答案 1 :(得分:0)
你将受限于你能做什么。您无法简单地读取/转换外部配置文件中标有NameValueSectionHandler
的部分。 ConfigurationManager.OpenMappedExeConfiguration(...).GetSection(...)
方法继承了一组不同的基类,并且不知道如何处理NameValueSectionHandler
。
解决此问题的最佳方法是将您的部分标记为使用AppSettingsSection
而不是@ {1}},详见@ Stringfellow的答案,但无论出于何种原因(可能是好的)你无法做到这一点。
因此,您将不得不在某个时候使用原始xml。以下是如何实现此目的的示例。
NameValueSectionHandler
这样做的一个警告是,您冒着错误地破坏配置文件的高风险。同样,@ Stringfellow的答案将是处理此问题的首选方式。