我正在将现有的 Windows 窗体 C# 应用程序迁移到 .NET 5.0,并且我正在尝试按照 migration docs 上提供的说明进行操作。 .一切正常,但还有一件事要做:从 app.config 文件迁移调试/发布设置。
我已经考虑过重用 NET Core 的 IConfiguration
,但是将 Microsoft.Extensions.Configuration nuget 包添加到项目中(以便我能够创建 ConfigurationBuilder
实例)似乎会破坏一切(例如,using System;
将开始生成编译错误)。
关于发生了什么的任何想法?你们如何将 Windows 窗体应用程序上的设置从 4.8 迁移到 .NET 5.0?
最佳答案
在 Windows 窗体中使用 .NET 5 或 .NET Core 配置系统
您可以按照以下步骤操作:
Microsoft.Extensions.Hosting
包裹。您可能想要安装
Microsoft.Extensions.Configuration.Json
而不是托管包和 Microsoft.Extensions.Configuration.Binder
这对于这个例子来说已经足够了。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"
}
}
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 窗体应用程序上的设置从 4.8 迁移到 .NET 5.0?
您似乎熟悉 .NET 4.x 中的应用程序/用户设置。 .NET 5 中仍然支持相同的功能。
Settings.settings
文件是默认项目模板的一部分,它允许您使用设计器支持和更多功能创建用户设置和应用程序设置。你可以看看Application Settings for Windows Forms .
关于c# - 向 .NET 5.0 上的 Windows 窗体添加配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65669920/