将appsettings.json保存在.net core 3.1中

Kir*_*eed 6 c# .net-core

我想要我的 .net core 3.1 winforms 项目中有一个配置文件。我有以下工作来读取文件

using Microsoft.Extensions.Configuration;
using System;
using System.Text;
using System.Windows.Forms;
using System.Xml;
namespace FeedRead
{

    public partial class Form1 : Form
    {

        private ConfigurationBuilder configuration;
        public Form1()
        {
            configuration = new ConfigurationBuilder();
            configuration.SetBasePath(System.IO.Directory.GetCurrentDirectory());
            configuration.AddJsonFile(path: "appsettings.json", optional: false, reloadOnChange: true);
            configuration.Build();
        }
Run Code Online (Sandbox Code Playgroud)

但是当我进行更改后如何保存配置呢?

我尝试了以下操作,但不知道如何完成。

    private void Form1_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
    {

        configuration.Properties.Add("col1Width", listView1.Columns[0].Width);
        var extn = configuration as Microsoft.Extensions.Configuration.IConfigurationBuilder; // not sure about
        var provider = extn.GetFileProvider();
        var info = provider.GetFileInfo(subpath: "appsettings.json"); // not sure about
        // how do i save?

    }
Run Code Online (Sandbox Code Playgroud)

Jam*_*rti 1

在 Startup.cs 文件中,添加以下内容:

    private IConfiguration Configuration { get; }

    public Startup(IWebHostEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();
    }

    public void ConfigureServices(IServiceCollection services)
    {
        _appSettings = Configuration.GetSection("AppSettings").Get<AppSettings>();
        services.AddSingleton(_appSettings);

        ...
    }
Run Code Online (Sandbox Code Playgroud)

  • 答案与问题无关。问题是如何在运行时保存 appsettings.json,而不是如何读取它。 (5认同)
  • 我只需将用户输入写入同一个 Json 文件。File.WriteAllText(路径, JsonSerializer.Serialize(appSettings)); (2认同)