.NET 5 WinForms 应用程序中保存的设置在哪里?

Posted

技术标签:

【中文标题】.NET 5 WinForms 应用程序中保存的设置在哪里?【英文标题】:Where are the settings saved in a .NET 5 WinForms app? 【发布时间】:2021-04-07 14:50:19 【问题描述】:

在 .NET Framework WinForms 项目中,该项目中有一个 App.config 文件,这是一个 XML 文件,其中包含一个 configSection,它将引用 System.Configuration 中的一个类,以及一个用于 userSettings 本身的部分,例如所以:

<configSections>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561944e089">
        <section name="MyAppName.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561944e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
</configSections>
<userSettings>
    <MyAppName.Properties.Settings>
        <setting name="Test" serializeAs="String">
            <value>Some Value</value>
        </setting>
    </MyAppName.Properties.Settings>
</userSettings>

这会在 build 文件夹中创建一个文件,其应用名称加上 .exe.config,如 MyAppName.exe.config。

但是当我使用 .NET 创建一个新的 WinForms 项目时:

解决方案中没有 App.config。我可以使用项目属性编辑设置:

我可以访问这些值,并使用相同的 Properties 对象和方法更新它们:

namespace WindowsFormsApp1

    public partial class Form1 : Form
    
        public Form1()
        
            InitializeComponent();

            textBox1.Text = Properties.Settings.Default.Test;
        

        private void button1_Click(object sender, EventArgs e)
        
            Properties.Settings.Default.Test = textBox1.Text;

            Properties.Settings.Default.Save();
        
    

一切似乎都正常,但是当我检查 bin 文件夹时,没有可以看到值实际存储位置的文件。

.NET 5 将保存的应用程序设置存储在哪里,如果不是与应用程序的 exe 位于同一文件夹中的文件中?

【问题讨论】:

【参考方案1】:

用户设置存储在user.config文件中,路径如下:

%userprofile%\appdata\local\&lt;Application name&gt;\&lt;Application uri hash&gt;\&lt;Application version&gt;

应用程序设置文件默认不会创建(意外),但是如果您在应用程序的 dll/exe 文件旁边手动创建它们,配置系统会尊重它。文件名应为&lt;Application name&gt;.dll.config。注意文件扩展名.dll.config

您可能想看看以下类的源代码:

LocalFileSettingsProvider(默认设置提供者) ClientSettingsStore ConfigurationManagerInternal ClientConfigurationPaths

在撰写此答案时,Application Settings for Windows Forms 仍然没有任何 .NET 5 条目并重定向到 4.x 文档。

【讨论】:

您知道是否仍然可以按照***.com/questions/3004210/… 中的说明进行 app.config 转换?这似乎仍然不适合我。 我没试过,但我希望它能工作。我默认情况下缺少创建应用程序配置文件是与 VS/designer 相关的问题,而不是配置系统问题。【参考方案2】:

首先,这是一个已知的(.NET 团队)问题:https://github.com/dotnet/project-system/issues/7772。

其次,您的问题中几乎描述了问题和解决方案:

(之前)..项目中有一个App.config文件,.. (现在)解决方案中没有App.config...

添加缺少的 app.config,一切都会像以前一样工作。

【讨论】:

以上是关于.NET 5 WinForms 应用程序中保存的设置在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

c# winforms如何保存用户输入的数据

工具条 WinForms .Net Core 的问题

在 vb.net winforms 中使用日期时间选择器保存日期时间时面临的问题

如何使用 SQL Express 使在 WinForms .NET 3.5 中开发的软件具有可移植性

在WinForms中使用XML配置文件持久化数据(保存和恢复用户和应用程序数据)

有没有办法在 WinForms .NET 3.5 应用程序中为未处理的异常定义操作?