ConfigurationSubstitutor 1.0.0
See the version list below for details.
dotnet add package ConfigurationSubstitutor --version 1.0.0
NuGet\Install-Package ConfigurationSubstitutor -Version 1.0.0
<PackageReference Include="ConfigurationSubstitutor" Version="1.0.0" />
paket add ConfigurationSubstitutor --version 1.0.0
#r "nuget: ConfigurationSubstitutor, 1.0.0"
// Install ConfigurationSubstitutor as a Cake Addin #addin nuget:?package=ConfigurationSubstitutor&version=1.0.0 // Install ConfigurationSubstitutor as a Cake Tool #tool nuget:?package=ConfigurationSubstitutor&version=1.0.0
ConfigurationSubstitutor
Allows to substitute variables from configuration, this way hostnames, or passwords can be separated and automatically substituted if another configuration entry references them. Scenarios could be that you have the password from an Azure KeyVault and the connection string defined in appsettings. The connection string can reference the password. Another scenario is that you have multiple configuration entries for the same domain, don't duplicate that information anymore, reference it.
Usage
ASP.NET Core
To add it to ASP.NET Core configuration simply place .EnableSubstitutions()
last.
Make sure .EnableSubstitutions()
is always called after all other configurations are added, else it won't behave properly!
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((ctx, builder) =>
{
// if you have any additional configuration place it before
builder.EnableSubstitutions();
});
Another example where the configuration builder is created:
var configuration = new ConfigurationBuilder()
.AddUserSecrets(typeof(GameRepositoryTests).Assembly)
.AddJsonFile("appsettings.json")
.EnableSubstitutions()
.Build();
Remark: you can also specify the start/end strings that define a substitutable value. Here we define that values are enclosed within $(), that's what is used by Azure DevOps for substitutions.
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((ctx, builder) =>
{
// if you have any additional configuration place it before
builder.EnableSubstitutions("$(", ")");
});
Examples
Connection string and password
Example where the entry ConnectionString references the DatabasePassword. The configuration contains these two entries:
- ConnectionString = blablabla&password={DatabasePassword}&server=localhost
- DatabasePassword = ComplicatedPassword
var substituted = configuration["ConnectionString"];
Easy-peasy substituted
contains blablabla&password=ComplicatedPassword&server=localhost
More substitutions
It supports any number of substitutions, for example if the configuration contains these three entries:
- Foo = {Bar1}{Bar2}{Bar1}
- Bar1 = Barista
- Bar2 = -Jean-
var substituted = configuration["Foo"];
Now substituted
contains Barista-Jean-Barista
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Microsoft.Extensions.Configuration (>= 3.1.6)
- Microsoft.Extensions.Configuration.Abstractions (>= 3.1.6)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on ConfigurationSubstitutor:
Package | Downloads |
---|---|
Aurora.Turbine.Api
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.