我以为我知道这一点,但今天我被证明是错的 - 再一次.
运行VS2008,.NET 3.5和C#.我使用默认值将"用户"设置添加到"属性设置"选项卡,然后使用以下代码读取它们:
myTextBox.Text = Properties.Settings.Default.MyStringProperty;
Run Code Online (Sandbox Code Playgroud)
然后,在用户编辑选项对话框中的值后,我将其保存为:
Properties.Settings.Default.MyStringProperty = myTextBox.Text;
Properties.Settings.Default.Save();
Run Code Online (Sandbox Code Playgroud)
我的问题是,这个新值保存在哪里?可执行文件目录中的MyApp.exe.config文件未更新,它仍包含默认值.另外,据我所知,该目录中的其他任何文件都没有更新!但是,当程序重新读入值时,它会获得更改的值,因此我知道它已保存在某处...
这不仅仅是学术性的,我需要能够手动编辑今天早上的价值,当我找不到任何改变的东西时,我会感到难过.
我想知道在.NET中设置文件背后的魔力是什么.想象一下,如果你创建了一个在这个例子中调用的程序集SettingsHolder,你可以在用户模式下创建一个带有字符串的公共设置类,然后编译.
现在您在MyApp中引用程序集,然后编译然后您可以使用生成的设置类更改设置应用程序中的值SettingsHolder并保留它们.
现在进入MyApp的输出目录,并且没有设置的跟踪(应用程序配置文件中没有任何内容,程序集中没有任何内容,没有任何内容!).
到底是怎么回事?!(我试图在.NET源代码中使用步骤调试,并且反射器看看发生了什么,.NET似乎使用了LocalFileSettingsProvider(但对我来说这似乎很奇怪,因为MyApp.exe.config输出目录中没有任何内容).