【问题标题】:Where are user-mode .NET settings stored?用户模式 ​​.NET 设置存储在哪里?
【发布时间】:2010-10-02 22:54:52
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: .net settings


    【解决方案1】:

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

    %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\
    

    更多信息:

    【讨论】:

    • 在 Windows Vista 和更新版本中,这些存储在 %USERPROFILE%\AppData\Local\ 下
    【解决方案2】:

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

    %LOCALAPPDATA%\ 您的公司 \ 应用程序名称 \ ..\user.config

    【讨论】:

      【解决方案3】:

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

      编辑:

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

      【讨论】:

      • 我没有在带有反射器的程序集的资源中看到我的设置文件。
      • Slashene:它不是嵌入式资源,生成一个C#代码文件,并在程序集中编译为一个类。
      • 类设置只是一个包装,而且你可以改变你的设置值,如果这个值是硬编码在这个类中的,你不能改变设置的值
      • 您的回答仅适用于设置为应用程序级别的设置。该问题特别指出这是在用户模式下。此外,您不能修改应用程序级别设置(在 program.exe.config 中)。它们是只读的。
      最近更新 更多