【问题标题】:Where am I going wrong with the persistence of User scoped Settings?用户范围设置的持久性在哪里出错?
【发布时间】:2012-01-22 22:45:43
【问题描述】:

我有一个布尔型、用户范围的设置。我通过一个名为 Settings 的引用类库来访问它。这个类库有一个带有属性的模块:

Module AppSettings
 Public Property MyBooleanSetting() As Boolean
    Get
        Return My.Settings.MyBooleanSetting
    End Get
    Set(ByVal value As Boolean)
        My.Settings.MyBooleanSetting = value
        My.Settings.Save()
    End Set
 End Property
End Module

我在设置类库的属性页中定义了设置。

当其他代码操作设置时,它将使用如下代码:

Settings.MyBooleanSetting=True

在代码运行时,它可以工作。但是在重新启动应用程序后,新值不会保留。 我哪里错了?

【问题讨论】:

    标签: vb.net settings


    【解决方案1】:

    在查看了 Using My.Settings in Visual Basic 2005 MSDN 文章和这些 MSDN Forum Threads 之后,我想说您需要验证正在使用哪个路径。

    用户范围设置特定于每个用户。应用程序代码可以在运行时安全地读取和设置它们。这些设置存储在 user.config 文件中。从技术上讲,每个应用程序的每个用户都有两个 user.config——一个用于非漫游,一个用于漫游。尽管 Visual Basic 2005 文档声明 user.config 文件将根据用户名 (joe.config) 命名,但情况并非如此。 user.config 文件在 \[Local Settings]Application Data\\\ 中创建。地点:
    • 是用户数据目录,非漫游(以上本地设置)或漫游。
    • 是用户名。
    • 是CompanyNameAttribute 值(如果可用)。否则,忽略此元素。
    • 是AppDomain.CurrentDomain.FriendlyName。这通常默认为 .exe 名称。
    • 是 URL、StrongName 或 Path,基于可用于散列的证据。
    • 是从 CurrentDomain 收集的证据的 SHA1 散列,按以下优先顺序排列:
    a.StrongName
    b.网址

    如果这些都不可用,请使用 .exe 路径。

    • 是 AssemblyInfo 的 AssemblyVersionAttribute 设置。

    【讨论】:

      【解决方案2】:

      伙计们,你们省气。毕竟代码确实有效。我在应用程序的 Viewmodel 中使用了另一个属性,该属性缓存了 Setting.MyBooleanSetting,但我忘记在应用程序启动时读取它...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-06
        • 2017-01-13
        • 1970-01-01
        • 2018-11-21
        • 2023-04-10
        相关资源
        最近更新 更多