Lui*_*reu 11 c# winforms .net-5
我正在将现有的 Windows 窗体 C# 应用程序迁移到 .NET 5.0,并且我正在尝试按照迁移文档中提供的说明进行操作。一切正常,但还有一件事要做:从 app.config 文件迁移调试/发布设置。
我曾考虑过重用 NET Core 的IConfiguration,但是将 Microsoft.Extensions.Configuration nuget 包添加到项目中(以便我能够创建ConfigurationBuilder实例)似乎会破坏一切(例如,using System;将开始生成编译错误)。
关于发生了什么的任何想法?你们如何将 Windows 窗体应用程序上的设置从 4.8 迁移到 .NET 5.0?
Rez*_*aei 17
在 Windows 窗体中使用 .NET 5 或 .NET Core 配置系统
您可以按照以下步骤操作:
创建WinForms .NET (5) 应用程序
安装Microsoft.Extensions.Hosting包。
相反,你可能需要安装托管包Microsoft.Extensions.Configuration.Json和Microsoft.Extensions.Configuration.Binder这些都足以在这个例子。
将 appsettings.json 文件添加到项目根目录,将其构建操作设置为内容并将复制到输出目录设置为始终。
修改程序类:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
确保您已添加 using Microsoft.Extensions.Configuration;
设置文件内容:
{
"MySettings": {
"Text": "Title of the form",
"BackColor": "255,0,0",
"Size": "300,200"
}
}
Run Code Online (Sandbox Code Playgroud)
要读取设置,请打开 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;
}
Run Code Online (Sandbox Code Playgroud)
运行应用程序并查看结果:
使用 Windows 窗体的经典设置
并回答您的最后一个问题:你们如何将 Windows 窗体应用程序上的设置从 4.8 迁移到 .NET 5.0?
您似乎熟悉 .NET 4.x 中的应用程序/用户设置。.NET 5 中仍然支持相同的内容。Settings.settings文件是默认项目模板的一部分,它允许您使用设计器支持和更多功能创建用户设置和应用程序设置。您可以查看Windows 窗体的应用程序设置。