作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以访问 applicationSettings
中的值?部分加载 app.config 文件?
我找到了一个例子 How do I retrieve appSettings ,但我不知道如何访问 applicationSettings
这边走。
最佳答案
applicationSettings 在运行时是只读的。您可以通过 app.config 文件中的文本编辑器直接设置/修改它们,但建议在 Visual Studio 中打开项目属性并选择“设置”选项卡。设置正确的范围很重要:
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="WindowsFormsTestApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<WindowsFormsTestApplication1.Properties.Settings>
<setting name="myOwnSetting" serializeAs="String">
<value>Hi there!</value>
</setting>
</WindowsFormsTestApplication1.Properties.Settings>
</applicationSettings>
</configuration>
var currentValue = Properties.Settings.Default.myOwnSetting;
applicationSettings
在上面的 list 中,这将检索字符串“Hi there!”对于变量
currentValue
.
<userSettings>
的部分中而不是
<applicationSettings>
,但您仍然可以使用上面的代码行访问它。
Properties.Settings.Default.myUserSetting = "Something else";
Properties.Settings.Default.Save();
C:\Documents and Settings\USERID\Local Settings\Application Data\FIRMNAME\WindowsFormsTestApplicati_Url_tdq2oylz33rzq00sxhvxucu5edw2oghw\1.0.0.0
User.config
的文件中, 如下所示:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<userSettings>
<WindowsFormsTestApplication1.Properties.Settings>
<setting name="myUserSetting" serializeAs="String">
<value>Something else</value>
</setting>
</WindowsFormsTestApplication1.Properties.Settings>
</userSettings>
</configuration>
<sectionGroup>
与 <section>
声明是强制性的,其名称属性需要与命名空间匹配。命名空间必须在配置中只出现一次,而且只有一个 applicationSettings
部分允许。 WindowsFormsTestApplication1.Properties.Settings
)。因此,如果您想从不在同一命名空间中的代码访问设置,您可能需要使用完全限定的引用。话虽如此,复制整个<applicationSettings>...</applicationSettings>
时要小心。部分从一个应用程序的配置到另一个 - 之后您可能需要更改目标配置中的命名空间。 Settings.Settings
(与 Settings.Designer.cs
一起通过 C# 代码访问 sessing)在项目的 Properties 部分。这是设置的副本,因为它将存储在您的 Web.config
中。或 App.config
文件(取决于您的项目类型,仅适用于应用程序范围设置 - 用户范围设置基于用户配置文件存储)。您可以创建其他 *.settings
文件并使用它们(如 here 所述)。 internal static string GetApplicationSetting(string key,
string nameSpace="Properties.Settings")
{
string xValue=null;
try
{
string path = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
XDocument doc = XDocument.Load(path);
var xPathStr= string.IsNullOrEmpty(nameSpace)
? "//applicationSettings"
: $"//applicationSettings/{nameSpace}";
var settings=doc.XPathSelectElement(xPathStr).Elements().Where(
w => w.Name=="setting"
&& w.HasAttributes
&& w.Attribute("serializeAs").Value=="String"
);
var setting=settings.Where(f => f.HasAttributes
&& f.Attribute("name").Value==key).Elements();
xValue=setting.FirstOrDefault().Value;
}
catch {}
return xValue;
}
applicationSettings
通过将配置视为 XDocument
.给出的示例仅限于字符串类型,您可以从上面的 app.config 示例中检索设置,如下所示:var value=GetApplicationSetting("myOwnSetting", "WindowsFormsTestApplication1.Properties.Settings");
同样,您可以创建一个类似的函数 获取用户设置 默认 <userSettings>
部分:只需复制上面的代码,重命名函数名并替换applicationSettings
在 xPathStr
来自 userSettings
. <appSettings>
配置中的部分工作方式不同,因为它不区分“用户”和“应用程序”范围,也不支持不同的数据类型,只支持字符串。但是,可以轻松读取和写入配置键/值。AppSettings
或 applicationSettings
,然后 read this 在你决定之前。 关于.net - 如何从加载的 App.config 文件中检索 ApplicationSettings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2101273/
我是一名优秀的程序员,十分优秀!