.net core 存储应用程序设置的.NET核心方式是什么?

.net core 存储应用程序设置的.NET核心方式是什么?,.net-core,settings,.net Core,Settings,我正在开发一个跨平台(win/mac/linux)应用程序,并希望存储我的应用程序状态。.NETCore推荐的方法是什么 我已经翻遍了文档,找到的最接近的东西是,它是针对Visual Studio/.NET Framework的(我使用的是VS代码)。如前所述,您可以使用appsettings.json,它是在dotnet new命令的新项目模板中生成和引用的 仅适用于本地主机 只需将它们存储在appsettings.json或作为环境 变量 对于暂存/生产, Azure密钥保险库 通过使用Az

我正在开发一个跨平台(win/mac/linux)应用程序,并希望存储我的应用程序状态。.NETCore推荐的方法是什么

我已经翻遍了文档,找到的最接近的东西是,它是针对Visual Studio/.NET Framework的(我使用的是VS代码)。

如前所述,您可以使用appsettings.json,它是在dotnet new命令的新项目模板中生成和引用的

  • 仅适用于本地主机
  • 只需将它们存储在appsettings.json或作为环境 变量

    对于暂存/生产,

  • Azure密钥保险库
  • 通过使用Azure Key Vault和Microsoft.Extensions.Configuration.AzureKeyVault NuGet软件包,您将能够在实际环境中以最佳方式为您的项目存储配置

    然后你只要把它注射进去

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
     WebHost.CreateDefaultBuilder(args)
     .ConfigureAppConfiguration((context, config) =>
     {
         var root = config.Build();
         config.AddAzureKeyVault(
            $”https://{root["KeyVault:Vault"]}.vault.azure.net/",
            root[“KeyVault:ClientId”],
            root[“KeyVault:ClientSecret”]);
     })
     .UseStartup<Startup>();
    
    公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
    WebHost.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration((上下文,配置)=>
    {
    var root=config.Build();
    config.AddAzureKeyVault(
    $“https://{root[“KeyVault:Vault”]}.Vault.azure.net/”,
    根[“KeyVault:ClientId”],
    root[“KeyVault:ClientSecret”];
    })
    .UseStartup();
    
    尽管您仍然必须将这3个变量隐藏在中,但Azure具有Azure AD以强制仅对指定应用程序进行访问。因此,您需要在Azure AD下注册一个应用程序以使其正常工作。还有一些限制性功能将帮助您进一步对Azure密钥库进行沙箱处理

  • 现有Vault存储
  • 最后但并非最不重要的一点是,最后一种方法是利用现有的vault存储选项,如HashiCorp。类似的库将帮助您快速有效地实施它。如果您的服务器主要使用非Azure提供商,则这非常适合您。

    您可以从

    虽然这些文档是针对ASP Core的,但您应该能够在常规的.Net Core应用程序中使用它们

    创建settings.json:

    {
        "mysetting": "value",
    }
    
    并使用它:

    var configuration = new ConfigurationBuilder()
        .AddJsonFile("settings.json")
        .Build();
    
    // get the values from the settings.json
    var mySetting = configuration["mysetting"];
    Console.WriteLine(mySetting);
    

    您能定义状态的含义吗?我不是在使用ASP.NET,而是在编写一个GUI.NET应用程序-在UI中使用跨平台QML,因为没有任何Windows UI解决方案是跨平台的。您是如何在运行时更改设置然后保存回文件的?