gpt4 book ai didi

c# - 程序集特定设置未在运行时加载

转载 作者:太空狗 更新时间:2023-10-30 00:29:00 25 4
gpt4 key购买 nike

我正在开发 .NET 3.5 Windows 窗体应用程序。我有两个项目,UI 和库。

UI 使用强类型设置,这些设置通常存储在 app.config 文件中。我使用 UI.Properties.Settings 类(由 Visual Studio 生成)读取它们。

库使用自己的强类型设置(转储到 Library.config 文件中的 Settings.settings 文件)。

在运行时,库设置不会从 Library.config 文件中重新加载。运行时仅读取 UI.config 文件。所以我坚持使用库程序集中的默认设置,无法在部署后提供值。

总结:对于不是主要可执行文件的应用程序集,不会在程序集加载时读取设置。

我知道我可以使用 ConfigurationManager.AppSettings["value"] 并且这将从默认的应用程序配置文件 (UI.config) 中读取,但是如果我想要强类型设置我该怎么办(使用 Properties.Settings 类读取) ?

调用 Library.Properties.Settings.Default.Reload() 不会这样做。

谢谢。

最佳答案

您需要做的是将您的库配置部分合并到 app.connfig。合并配置文件是通过首先在 < configSections 中添加元素来完成的> config 元素,标识配置部分,然后在配置元素中添加配置元素。

合并配置文件的例子:

应用配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="CA3.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<CA3.Settings>
<setting name="Setting" serializeAs="String">
<value>2</value>
</setting>
</CA3.Settings>
</userSettings>
</configuration>

库配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="CA3.Library" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<CA3.Library>
<setting name="Setting" serializeAs="String">
<value>1</value>
</setting>
</CA3.Library>
</userSettings>
</configuration>

包含库和应用配置的合并 app.config。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="CA3.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="CA3.Library" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<CA3.Settings>
<setting name="Setting" serializeAs="String">
<value>2</value>
</setting>
</CA3.Settings>
<CA3.Library>
<setting name="Setting" serializeAs="String">
<value>1</value>
</setting>
</CA3.Library>
</userSettings>
</configuration>

关于c# - 程序集特定设置未在运行时加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1399299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com