37

我想知道 .NET 中 .settings 文件背后的魔力是什么。想象一下,您创建了一个在此示例中调用的程序集SettingsHolder,您创建了您的设置类,该类在用户模式下是公共的,其中包含一个字符串,然后您进行编译。

现在您在 MyApp 中引用您的程序集,然后进行编译,然后您可以使用生成的设置类更改您的设置的应用程序中的值SettingsHolder并保留它们。

现在进入 MyApp 的输出目录,您的设置没有任何痕迹(应用程序配置文件中没有任何内容,程序集中没有任何内容,什么都没有!)。

到底是怎么回事?!(我试图在 .NET 源代码中进行源步骤调试,并使用反射器来查看发生了什么,.NET 似乎在使用LocalFileSettingsProvider(但对我来说似乎很奇怪,因为MyApp.exe.config输出目录中没有任何内容)。

4

3 回答 3

56

对于每个用户,设置文件存储在不同的位置。要找到它们,请单击开始菜单,单击运行,然后粘贴:

%USERPROFILE%\Local Settings\Application Data\

然后按回车。将有一个包含您的“公司名称”的文件夹(无论它在您的程序集中设置为什么),然后是更多的子文件夹。设置存储在 user.config 中。

完整路径:

%USERPROFILE%\Local Settings\Application Data\<Company Name>\
<appdomainname>_<eid>_<hash>\<verison>\user.config.

在 Windows Vista 和更新版本中,这些存储在:

%USERPROFILE%\AppData\Local\

更多信息:

于 2009-01-22T16:23:40.553 回答
1

在 OS >= Vista上,我将声明它位于此处的用户设置文件:

%LOCALAPPDATA%\ yourcompany \ app-name \..\user.config

于 2016-01-21T11:23:23.320 回答
-4

设置文件包含在编译的程序集中。

编辑:

只是为了澄清一点。文件中的代码getset设置被编译到程序集中。值本身被移动到应用程序名称所在的Program.exe.config位置。Program反射器将让您查看获取和设置值的代码,包括配置文件的硬编码键。配置文件本身将向您显示该值并允许您在构建应用程序后对其进行更改。

于 2009-01-22T16:07:10.867 回答