
Security News
Bun 1.2.19 Adds Isolated Installs for Better Monorepo Support
Bun 1.2.19 introduces isolated installs for smoother monorepo workflows, along with performance boosts, new tooling, and key compatibility fixes.
NetLah.Extensions.Configuration
Advanced tools
Reusable classes to build application configuration with environmentName such as ConfigurationBuilderBuilder and CertificateLoader
NetLah.Extensions.Configuration is a library which contains a set of reusable classes for build configuration with environment. These library classes are ConfigurationBuilderBuilder
, CertificateLoader
and ConnectionStringManager
.
ConsoleApp
public static void Main(string[] args)
{
var configuration = ConfigurationBuilderBuilder.Create<Program>(args).Build();
var defaultConnectionString = configuration.GetConnectionString("DefaultConnection");
Console.WriteLine($"[TRACE] ConnectionString: {defaultConnectionString}");
}
Full API support
var initConfig = new ConfigurationBuilder().Build();
IConfigurationRoot configuration = new ConfigurationBuilderBuilder()
.WithConfiguration(initConfig)
.WithInMemory(new Dictionary<string, string?>{ ["Key:Sub"] = "Value" })
.WithBasePath("C:/App/bin")
.WithCurrentDirectory()
.WithBaseDirectory()
.WithAppSecrets<Program>()
.WithAppSecrets(typeof(Program).Assembly)
.WithAddConfiguration(cb => cb.AddIniFile("appsettings.ini", optional: true, reloadOnChange: true))
.WithEnvironment("Staging")
.WithCommandLines(args)
.Build();
https://devblogs.microsoft.com/premier-developer/order-of-precedence-when-configuring-asp-net-core/
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/#default-configuration
DOTNET_
and ASPNETCORE_
Development
environmentThe application binary folder is default basePath for appsettings.json, appsettings.Production.json,etc. In case want to change current directory as basePath:
var configuration = new ConfigurationBuilderBuilder()
.WithCurrentDirectory()
.Build();
Production
environmentName by default if no host environmentName configurationConfigurationBuilderBuilder
will detect EnvironmentName
by add configuration environment variables with prefix DOTNET_
and ASPNETCORE_
. If no environment variable set, Production
will use by default. Example of environment variables:
ASPNETCORE_ENVIRONMENT = Development
DOTNET_ENVIRONMENT = Staging
Sometime, we cannot set the environmentName using environment variable, or we need different environment configuration build lik in unit test project, we can specific the environmentName.
var configuration = ConfigurationBuilderBuilder.Create<ConfigurationBuilderBuilderTest>()
.WithEnvironment("Testing")
.Build();
var configuration = ConfigurationBuilderBuilder.Create<Program>()
.WithAddConfiguration(cb => cb.AddIniFile("appsettings.ini", optional: true, reloadOnChange: true))
.WithAddConfiguration(cb => cb.AddXmlFile("appsettings.xml", optional: true, reloadOnChange: true))
.Build();
Or
var configuration = ConfigurationBuilderBuilder.Create<Program>()
.WithAddConfiguration(
cb => cb.AddIniFile("appsettings.ini", optional: true, reloadOnChange: true)
.AddXmlFile("appsettings.xml", optional: true, reloadOnChange: true)
)
.Build();
Reference at https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?#connection-string-prefixes
public enum DbProviders
{
Custom,
SQLServer,
PostgreSQL,
MySQL,
}
List of supported provider name
SQLServer
Mssql
SQLAzure
System.Data.SqlClient
Microsoft.Data.SqlClient
MySQL
MySql.Data.MySqlClient
MySqlConnector
PostgreSQL
Npgsql
Postgres
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=dbname;Integrated Security=True;",
"DefaultConnection_ProviderName": "System.Data.SqlClient",
"BlogConnection": "AccountEndpoint=https://7d48.documents.azure.com:443/;",
"BlogConnection_ProviderName": "Cosmos1",
"BlogConnection2_Cosmos": "AccountEndpoint=https://7d48.documents.azure.com:443/;"
}
}
IConfiguration configuration;
var connStrManager = new ConnectionStringManager(configuration);
var conn = connStrManager["defaultConnection"];
if (conn != null) {
if (conn.Provider == DbProviders.PostgreSQL) {
...
} else if (conn.Provider == DbProviders.MySQL) {
...
} else if (conn.Provider == DbProviders.SQLServer) {
...
} else if (conn.Provider == DbProviders.Custom && conn.Custom == "Cosmos1") {
...
}
}
var conn = connStrManager["BlogConnection", "BlogConnection2"];
if (conn != null) {
if (conn.Provider == DbProviders.Custom && conn.Custom == "Cosmos1") {
...
} else if (conn.Provider == DbProviders.Custom && conn.Custom == "Cosmos") {
...
}
}
Use docker for troubleshooting
FAQs
Reusable classes to build application configuration with environmentName such as ConfigurationBuilderBuilder and CertificateLoader
We found that netlah.extensions.configuration demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Bun 1.2.19 introduces isolated installs for smoother monorepo workflows, along with performance boosts, new tooling, and key compatibility fixes.
Security News
Popular npm packages like eslint-config-prettier were compromised after a phishing attack stole a maintainer’s token, spreading malicious updates.
Security News
/Research
A phishing attack targeted developers using a typosquatted npm domain (npnjs.com) to steal credentials via fake login pages - watch out for similar scams.