C# (.NET) 应用程序配置:Microsoft.Extensions.Configuration

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

C# (.NET) 应用程序配置:完整指南



配置管理是现代 C# (.NET) 应用程序开发中的关键任务之一。Microsoft.Extensions.Configuration 库提供了一种强大且灵活的机制,用于从各种来源读取设置:JSON 文件、环境变量、命令行参数和机密。在本文中,我们将详细讲解如何使用最佳实践和代码示例在 .NET 应用程序中设置配置。



库的主要功能



  • 多种数据源:JSON、XML、INI、环境变量、命令行参数、Azure Key Vault 等。
  • 分层结构:通过带冒号的键支持嵌套部分(Section:Subsection:Key)。
  • 绑定到类(Options Pattern):从配置自动填充 POCO 对象。
  • 灵活覆盖:最后添加的源具有最高优先级。
  • 机密支持:开发环境使用 Secret Manager,生产环境使用安全存储。


安装与引用



要在 .NET 应用程序(控制台、ASP.NET Core、MAUI 等)中使用配置,需要安装 NuGet 包:



dotnet add package Microsoft.Extensions.Configurationdotnet add package Microsoft.Extensions.Configuration.Jsondotnet add package Microsoft.Extensions.Configuration.EnvironmentVariablesdotnet add package Microsoft.Extensions.Configuration.CommandLine


在 ASP.NET Core 中,这些包默认已包含。



基本示例:从 appsettings.json 读取



创建 appsettings.json 文件:



{  "Logging": {    "LogLevel": {      "Default": "Information",      "Microsoft": "Warning"    }  },  "ConnectionStrings": {    "DefaultConnection": "Server=localhost;Database=MyDb;User Id=sa;Password=MyPass;"  },  "AppSettings": {    "AppName": "MyApp",    "Version": "1.0.0",    "MaxRetries": 3  }}


在控制台应用程序中读取配置的代码:



using Microsoft.Extensions.Configuration;

class Program{ static void Main(string[] args) { // 创建配置 var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddEnvironmentVariables() .AddCommandLine(args) .Build();

// 读取简单值 string appName = configuration["AppSettings:AppName"]; Console.WriteLine($"App Name: {appName}");

// 读取嵌套部分 string connString = configuration.GetConnectionString("DefaultConnection"); Console.WriteLine($"Connection String: {connString}");

// 读取整数 int maxRetries = int.Parse(configuration["AppSettings:MaxRetries"]); Console.WriteLine($"Max Retries: {maxRetries}");

// 获取整个部分 var appSettingsSection = configuration.GetSection("AppSettings"); Console.WriteLine($"Version: {appSettingsSection["Version"]}"); }}


Options 模式(绑定到类)



最佳实践是通过 IOptions<T> 使用强类型配置。为此:



  1. 为配置部分创建一个类:


public class AppSettings{    public string AppName { get; set; }    public string Version { get; set; }    public int MaxRetries { get; set; }}


  1. 在 DI 容器中注册配置(适用于 ASP.NET Core 或使用 Micros

推荐