【发布时间】:2011-03-13 10:34:13
【问题描述】:
不久前,我编写了自己的设置提供程序,因为在类库中持久化设置时遇到问题。 (注意 - 从应用程序中持久化设置没有问题)。
今天,我刚刚对持久类库设置进行了测试,它在没有我的自定义提供程序的情况下工作。 测试是:
(1) 创建类库
(2) 添加设置 - '名称'
(3) 添加一个具有公共共享属性“名称”的类,该属性可以读取和写入设置“名称”。
(4) 创建一个引用类库的应用程序,并使用共享属性来读写'Name'设置。
我确信在应用程序打开时“名称”设置会持续存在,但在我关闭它并重新打开它之后,该设置将恢复为默认设置。 现在不会发生这种情况,我想确定我以前是个白痴,而不是现在的白痴。
我现在得到的行为是预期的行为吗?
ETA:我注意到第一次创建测试应用程序时,更改设置、关闭并重新打开,设置没有保留。随后是。可能是我之前一次尝试后放弃了。任何想法为什么它没有第一次坚持?
ETA2:例如,我有一个名为“MyLibrary”的类库和一个名为“MyApp”的测试应用程序。我执行上面的步骤 1-4,下面是在 C:\Documents and Settings\User Name\Local Settings\Application Data\MyApp\MyApp.vshost.exe_Url_vi5gjcooahbdm2ma3dcay0mkexu2suul\1.0.0.0 找到的 user.config 文件的内容。注意:我没有触摸 MyApp 中的设置;-
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral >
<section name="MyLibrary.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<MyLibrary.My.MySettings>
<setting name="Name" serializeAs="String">
<value>New changed value</value>
</setting>
</MyLibrary.My.MySettings>
</userSettings>
【问题讨论】:
-
.settings / .config 文件(如果我没记错的话)绑定到您的 AppDomain,而不是特定程序集。当您从 lib 访问配置时,您实际上是在访问 APP 的配置。
标签: c# .net vb.net winforms settings