我正在尝试存储一些持久的应用程序数据,因此我通过R单击它,选择属性,然后选择设置选项卡并手动输入设置名称,类型,范围和值来为项目添加设置
当我运行代码时,我会读取如下设置:
lastRunTime = My.Settings.LastRunTime
并将其设置为:
My.Settings.LastRunTime = lastRunTime
我在哪里可以看到新设置?因为对于上帝的爱,我无法看到更新设置的位置。创建该设置时,app.config具有原始设置值。那我在哪里可以看到它?
当我运行代码时,我看到它会更新它,下次我运行应用程序时新值仍然存在,所以我知道它存储在某个地方。但在哪里?
答案 0 :(得分:9)
.NET必须做一些特别的事情,它必须保证另一个程序也恰好具有“LastRuntime”设置不会覆盖为您的程序存储的值。为此,它将user.config文件存储在难以找回的目录中。它有一个古怪的名字,比如
C:\ Users \用户名\应用程序数据\本地\ WindowsFormsApplication1 \ WindowsFormsApplication1._Url_twchbbo4atpsvjpauzkgkvesu5bh2aul \ 1.0.0.0 \ user.config
注意项目名称是路径的一部分,这是找回它的一种方法。名称中不可言喻的部分是 hash ,它是根据项目的各种属性创建的,这些属性使您的应用程序足够独特,即使名称匹配也不会与其他.NET程序发生冲突。就像你的产品名称,公司名称,exe名称等等。
注意反过来也是如此,更改这样的属性会使您丢失user.config文件。因此,如果“LastRuntime”是某种许可计量值,那么使用设置并不是最好的主意。
答案 1 :(得分:1)
该值存储在用户配置文件下的APPDATA文件夹中。对于Windows 7,请查看C:\ Users \\ AppData \ Roaming \
将根据您配置Visual Studio的方式命名一个文件夹。由于我的工作副本已注册到公司,因此默认值为我的公司名称。由于我在家中的Visual Studio副本是自己注册的,因此默认值是我的名字。
AppData是一个隐藏文件夹,如果您通过Windows资源管理器导航,则不会显示该文件夹。但是如果你在run命令中键入它,它将打开没有问题。
答案 2 :(得分:1)
这取决于这是机器级别设置还是用户级别设置。
对于机器级设置,项目中的app.config文件仅存储用于开发的原始设置,以便在完成构建应用程序并将其部署到生产环境或交付给客户时,该默认值将为在那里首次安装。
在调试期间更改值时,您的程序(默认情况下)位于项目根目录下的/bin/Debug/
文件夹中。将有另一个app.config文件,其中包含项目作为文件名的一部分:project.app.config
。这是您保存的设置的地方。
这里要记住的一件重要事情是,默认情况下,您的应用程序部署到Program Files目录中的文件夹,默认情况下,标准用户也没有对此位置的写入权限。这意味着标准用户无法更改应用程序级别设置。
对于用户级设置,会发生类似的过程。但是,有一个重要的区别。它不是与您的应用程序位于同一文件夹中,而是使用您用户的AppData文件夹。这意味着标准用户确实具有写访问权限,并且能够更改设置。但是,这意味着找到您的配置文件有点棘手,因为您必须防止两个具有相同名称的应用程序尝试将配置文件存储在同一文件夹中。
答案 3 :(得分:0)
你做了
My.Settings.LastRunTime = lastRunTime
My.Settings.Save() '-----------------> maybe you forgot this
我相信你可以通过..
阅读设置lastRunTime = My.Settings.LastRunTime