.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 库会在配置文件中找不到值时抛出异常:
在使用该库时,我们需要注意以下几点:
-
替换提供程序应该在加载全部配置之后再加入,以确保所有配置都已经加载完成。
-
在配置文件中使用值引用其他配置值时,应该使用以下格式:
${path:to:other:configuration:value}
- 该库允许跨多个配置提供程序进行值替换,从而使配置管理更加灵活和可维护。
总结
通过允许跨多个配置提供程序进行值替换,GSoft.Extensions.Configuration.Substitution 库简化了配置管理并提高了可维护性。试一试,让此库简化你的 .NET 配置体验!
标签:Core,GSoft,配置,MyService,Extensions,Substitution,Configuration From: https://www.cnblogs.com/fanfan-90/p/17494278.html