在 .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 配置系统
您可以按照以下步骤操作:
创建 WinForms .NET (5) 应用程序
安装 Microsoft.Extensions.Hosting
包。
您可能想要安装 Microsoft.Extensions.Configuration.Json
和 Microsoft.Extensions.Configuration.Binder
,而不是托管包,这对于本示例来说已经足够了。
将一个appsettings.json文件添加到项目根目录,将其构建操作设置为内容并将复制到输出目录设置为始终。
修改程序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;
设置文件内容:
{
"MySettings": {
"Text": "Title of the form",
"BackColor": "255,0,0",
"Size": "300,200"
}
}
要读取设置,请打开 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;
}
运行应用并查看结果:
使用 Windows 表单的经典设置
然后回答您的最后一个问题:你们如何将 Windows Forms 应用程序上的设置从 4.8 迁移到 .NET 5.0?
看来您熟悉 .NET 4.x 中的 application/user 设置。同样在 .NET 5 中仍然受支持。Settings.settings
文件是默认项目模板的一部分,它允许您创建用户设置和应用程序设置,并提供设计器支持和更多功能。你可以看看Application Settings for Windows Forms.
我正在将现有的 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 配置系统您可以按照以下步骤操作:
创建 WinForms .NET (5) 应用程序
安装
Microsoft.Extensions.Hosting
包。您可能想要安装
Microsoft.Extensions.Configuration.Json
和Microsoft.Extensions.Configuration.Binder
,而不是托管包,这对于本示例来说已经足够了。将一个appsettings.json文件添加到项目根目录,将其构建操作设置为内容并将复制到输出目录设置为始终。
修改程序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;
设置文件内容:
{ "MySettings": { "Text": "Title of the form", "BackColor": "255,0,0", "Size": "300,200" } }
要读取设置,请打开 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; }
运行应用并查看结果:
使用 Windows 表单的经典设置
然后回答您的最后一个问题:你们如何将 Windows Forms 应用程序上的设置从 4.8 迁移到 .NET 5.0?
看来您熟悉 .NET 4.x 中的 application/user 设置。同样在 .NET 5 中仍然受支持。Settings.settings
文件是默认项目模板的一部分,它允许您创建用户设置和应用程序设置,并提供设计器支持和更多功能。你可以看看Application Settings for Windows Forms.