在 .NET 5.0 上向 windows 表单添加配置

Adding configuration to windows forms on .NET 5.0

我正在将现有的 windows 表单 C# 应用程序迁移到 .NET 5.0,并且我正在尝试按照 migration docs 上提供的说明进行操作。一切正常,但还有一件事要做:从 app.config 个文件迁移 debug/release 设置。

我考虑过重用 NET Core 的 IConfiguration,但似乎将 Microsoft.Extensions.Configuration nuget 包添加到项目中(以便我能够创建 ConfigurationBuilder 实例)破坏一切(例如,using System; 将开始生成编译错误)。

对发生的事情有什么想法吗?你们如何在 Windows Forms 应用程序上将设置从 4.8 迁移到 .NET 5.0?

在 Windows Forms

中使用 .NET 5、.NET 6 或 .NET Core 配置系统

您可以按照以下步骤操作:

  1. 创建 WinForms .NET (5) 应用程序

  2. 安装 Microsoft.Extensions.Hosting 包。

    您可能想要安装 Microsoft.Extensions.Configuration.JsonMicrosoft.Extensions.Configuration.Binder,而不是托管包,这对于本示例来说已经足够了。

  3. 将一个appsettings.json文件添加到项目根目录,将其构建操作设置为内容并将复制到输出目录设置为始终。

  4. 修改程序class:

    static class Program
    {
        public static IConfiguration Configuration;
        static void Main(string[] args)
        {
            //To register all default providers:
            //var host = Host.CreateDefaultBuilder(args).Build();
             var builder = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
            Configuration = builder.Build();
             Application.SetHighDpiMode(HighDpiMode.SystemAware);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
    

    确保您已添加 using Microsoft.Extensions.Configuration;

  5. 设置文件内容:

    {
      "MySettings": {
        "Text": "Title of the form",
        "BackColor": "255,0,0",
        "Size": "300,200"
      }
    }
    
  6. 要读取设置,请打开 Form1.cs 并粘贴以下代码:

    public class MySettings
    {
        public string Text { get; set; }
        public Color BackColor { get; set; }
        public Size Size { get; set; }
     }
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        var mySettings = Program.Configuration.GetSection("MySettings").Get<MySettings>();
        this.Text = mySettings.Text;
        this.BackColor = mySettings.BackColor;
        this.Size = mySettings.Size;
    }
    
  7. 运行应用并查看结果:

使用 Windows 表单的经典设置

然后回答您的最后一个问题:你们如何将 Windows Forms 应用程序上的设置从 4.8 迁移到 .NET 5.0?

看来您熟悉 .NET 4.x 中的 application/user 设置。同样在 .NET 5 中仍然受支持。Settings.settings 文件是默认项目模板的一部分,它允许您创建用户设置和应用程序设置,并提供设计器支持和更多功能。你可以看看Application Settings for Windows Forms.