用户范围设置的持久性我在哪里出错了?

时间:2012-01-22 22:45:43

标签: vb.net settings

我有一个布尔用户范围设置。我通过一个名为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类库的Property页面中定义了设置。

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

Settings.MyBooleanSetting=True

代码运行时,这有效。但是在重新启动应用程序后,新值不会保留。 我哪里错了?

2 个答案:

答案 0 :(得分:2)

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

  

用户范围设置特定于每个用户。它们可以在运行时由应用程序代码安全地读取和设置。这些设置存储在user.config文件中。为了在技术上准确,每个应用程序每个用户有两个user.configs - 一个用于非漫游,一个用于漫游。虽然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.URL

     

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

     

是AssemblyInfo的AssemblyVersionAttribute设置。

答案 1 :(得分:2)

拯救你的呼吸。代码确实起作用了。我在我的应用程序的Viewmodel中使用了另一个属性来缓存Setting.MyBooleanSetting,但我忘了在应用程序启动时阅读它...