winforms 在.NET 5.0上向Windows窗体添加配置

wmtdaxz3  于 2022-11-17  发布在  .NET
关注(0)|答案(2)|浏览(200)

我正在将现有的Windows Forms C#应用程序迁移到.NET 5.0,并尝试按照migration docs上的说明进行操作。一切都正常,但仍有一件事要做:从app.config文件迁移调试/发布设置。
我曾经考虑过重用NET Core的IConfiguration,但是将Microsoft.Extensions.Configuration nuget包添加到项目中(以便能够创建ConfigurationBuilder示例)似乎会破坏一切(例如,using System;将开始生成编译错误)。
你们是如何将Windows窗体应用程序上的设置从4.8迁移到.NET 5.0的?

sg24os4d

sg24os4d1#

在Windows窗体中使用.NET 5、.NET 6或.NET核心配置系统

您可以执行下列步骤:
1.创建WinForms .NET(5)应用程序
1.安装Microsoft.Extensions.Hosting套件。
您可能希望安装Microsoft.Extensions.Configuration.JsonMicrosoft.Extensions.Configuration.Binder,而不是宿主包,这两个包对于本示例来说已经足够了。
1.将appsettings.json文件添加到项目根目录,将其生成操作设置为Content,将“复制到输出目录”设置为Always。
1.修改程序类:

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;
1.设置文件的内容:

{
  "MySettings": {
    "Text": "Title of the form",
    "BackColor": "255,0,0",
    "Size": "300,200"
  }
}

1.若要读取该设置,请打开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;
}

1.运行应用程序并查看结果:

使用Windows窗体的经典设置

最后一个问题:你们是如何在Windows窗体应用程序上将设置从4.8迁移到.NET 5.0的?
看起来您很熟悉.NET 4.x中的应用程序/用户设置。.NET 5中仍然支持相同的设置。Settings.settings文件是默认项目模板的一部分,它允许您创建具有设计器支持和更多功能的用户设置和应用程序设置。您可以查看Application Settings for Windows Forms

jrcvhitl

jrcvhitl2#

在寻找同样的答案时,我注意到该文档只提到app.config中不再支持运行时配置,因此您仍然可以使用它。
如果您的应用程序具有App.config文件,请移除<supportedRuntime>
.NET 5+(和.NET核心)中的App.config文件不再用于运行时配置。
对我来说,主要问题是在不同配置中的不同设置之间切换。我现在使用一个App.config每个配置,如前面提到的here

相关问题