用值替换简化你的 .NET 配置

.NET 是一个非常强大的框架,它允许开发人员管理来自各种源(如 JSON 文件、环境变量等)的应用程序设置。但是,有时开发人员需要一种方法来引用和替换其他设置中的配置值,以避免在多个地方维护相同的值,从而使配置文件变得混乱和难以维护。

为了解决这个问题,我们可以使用 GSoft.Extensions.Configuration.Substitution 库。该库是 Microsoft.Extensions.Configuration 生态系统的强大补充,它允许开发人员在配置文件中引用其他配置值,从而简化了配置管理并提高了可维护性。.

Demo

示例配置如下:

//appsettings.json
{
  "MyService": {    
    "ServiceA": "https://localhost:1234/abc"
    "ServiceB": "https://localhost:1234/xyz"
  }
}

在这种情况下,如果 ServiceA 和 ServiceB 都引用相同的基本 URL,那么我们可以使用以下格式引用 ServiceA 和 ServiceB 的基本 URL:

//appsettings.json
{
  "MyService": {    
    "ServiceA": "${MyService:BaseUrl}/abc"
    "ServiceB": "${MyService:BaseUrl}/xyz"
  }
}

//appsettings.Development.json
{
  "MyService": {
    "BaseUrl": "https://localhost:1234"
  }
}

然后,我们需要将 GSoft.Extensions.Configuration.Substitution 库添加到我们的项目中。

dotnet add package GSoft.Extensions.Configuration.Substitution

最后,将替换提供程序添加到应用程序的配置中:

var builder = WebApplication.CreateBuilder(args);
 
builder.Configuration.AddJsonFile("appsettings.json");
builder.Configuration.AddJsonFile($"appsettings.{builder.Environment.EnvironmentName}.json");
builder.Configuration.AddSubstitution(); // 加载全部配置后再加入替换提供程序

现在,你可以在配置文件中使用值替换,并享受更简洁、更易于维护的设置。

Console.WriteLine(builder.Configuration["MyService:ServiceA"]);

也不用担心配置错误,因为 GSoft.Extensions.Configuration.Substitution 库会在配置文件中找不到值时抛出异常:

用值替换简化你的 .NET 配置

在使用该库时,我们需要注意以下几点:

  • 替换提供程序应该在加载全部配置之后再加入,以确保所有配置都已经加载完成。

  • 在配置文件中使用值引用其他配置值时,应该使用以下格式:

${path:to:other:configuration:value}  
  • 该库允许跨多个配置提供程序进行值替换,从而使配置管理更加灵活和可维护。

总结

通过允许跨多个配置提供程序进行值替换,GSoft.Extensions.Configuration.Substitution 库简化了配置管理并提高了可维护性。试一试,让此库简化你的 .NET 配置体验!