在net6框架中winform应用程序没有了appconfig文件,如果我们想存储一些配置字符串我们就需要创建一个json文件,然后去读取这个文件。具体怎么操作呢,下面一起学习一下
首先在项目中新增一个json文件
在net6的框架中没有了appconfig配置文件我们需要新增一个json文件。
项目右键——添加——新建项——web——选择json文件
新增之后需要在单击文件在属性的复制到输出目录选择始终复制,不然在读取时会读不到这个文件
我们在文件中添加一些配置字符串
{
"ConnectionStrings": {
"Default": "依赖注入获取方式1"
},
"url": {
"url1": "依赖注入获取方式2"
},
"qwe": {
"aaaa": "普通方式获取"
}
}
读取
读取时我们可以写一个通用的读取方法 或者是通过依赖注入的方式读取
1.普通方式:
写一个通用方法
public string GetSettings()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
IConfigurationRoot configuration = builder.Build();
return configuration["qwe:aaaa"];
}
2.依赖注入读取方式:
依赖注入的使用可参考我的另一篇文章https://blog.csdn.net/qq_39569480/article/details/127227296?spm=1001.2014.3001.5501
包控制台安装
Microsoft.Extensions.Configuration 库, 包含IConfiguration接口 和 Configuration类
Microsoft.Extensions.Configuration.Json 库, 为 IConfiguration 增加了读取 Json 文件功能,
修改Program.cs文件
using Microsoft.Extensions.Configuration;
namespace DataSync
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
//创建服务容器
var services = new ServiceCollection();
//添加服务注册
ConfigureServices(services);
//先用DI容器生成 serviceProvider, 然后通过 serviceProvider 获取Main Form的注册实例
var serviceProvider = services.BuildServiceProvider();
var formMain = serviceProvider.GetRequiredService<Form1>(); //主动从容器中获取FormMain实例, 这是简洁写法
// var formMain = (FormMain)serviceProvider.GetService(typeof(FormMain)); //更繁琐的写法
Application.Run(formMain);
}
/// <summary>
/// 注入服务
/// </summary>
/// <param name="services"></param>
public static void ConfigureServices(IServiceCollection services)
{
//批量注入可以使用Scrutor或者自己封装
services.AddScoped<YlbBio>();
services.AddScoped(typeof(Form1));
//register configuration
IConfigurationBuilder cfgBuilder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT")}.json", optional: true, reloadOnChange: false)
;
IConfiguration configuration = cfgBuilder.Build();
services.AddSingleton<IConfiguration>(configuration);
}
}
}
使用:
namespace DataSync
{
public partial class Form1 : Form
{
private readonly IConfiguration _configuration;//注入IConfiguration
public Form1(YlbBio YlbBio, IConfiguration configuration)
{
InitializeComponent();
_configuration = configuration;
}
private void button1_Click(object sender, EventArgs e)
{
var Default = _configuration.GetConnectionString("Default"); //从配置文件中读取Default connectionString
Console.WriteLine(Default );
var url = _configuration["url:url1"];
Console.WriteLine(url);
//普通方式
Console.WriteLine(GetSettings());
}
public string GetSettings()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
IConfigurationRoot configuration = builder.Build();
return configuration["qwe:aaaa"];
}
}
}