Mafin.Configuration
0.2.0
dotnet add package Mafin.Configuration --version 0.2.0
NuGet\Install-Package Mafin.Configuration -Version 0.2.0
<PackageReference Include="Mafin.Configuration" Version="0.2.0" />
paket add Mafin.Configuration --version 0.2.0
#r "nuget: Mafin.Configuration, 0.2.0"
// Install Mafin.Configuration as a Cake Addin #addin nuget:?package=Mafin.Configuration&version=0.2.0 // Install Mafin.Configuration as a Cake Tool #tool nuget:?package=Mafin.Configuration&version=0.2.0
MAFIN Configuration Module
Examples
The example below shows a small code samples using this library:
config.yml Configuration file
example:
exampleSection:
namedProperty: value
Configuration model
[ConfigurationSection("example:exampleSection")]
public class MyConfigModel
{
public string NamedProperty { get; set; }
}
Example 1:
Given the simple class and configuration file above, we can place the data from config.yml
file into a new instance of MyConfigModel
class:
var config = new ConfigurationBuilder()
.AddYamlFile("config.yml")
.Build();
var appConfig = config.GetSection<MyConfigModel>();
Console.WriteLine(appConfig.NamedProperty); // returns "value"
Example 2:
We can do the same using DirectoryProbing
feature if we can't specify the file or list if files exactly, but find it using a pattern.
var config = new ConfigurationBuilder()
.AddDirectoryProbing("*.yml")
.Build();
var appConfig = config.GetSection<MyConfigModel>();
Console.WriteLine(appConfig.NamedProperty); // returns "value"
Example 3:
Mafin.Configuration.json
{
"configuration": {
"fileExtensions": [ "yml", "yaml" ]
}
}
We can set up this configuration library using an external configuration file (an example of such a file can be seen above):
var config = new ConfigurationBuilder()
.LoadSettingsFile()
.Build();
var appConfig = config.GetSection<MyConfigModel>();
Console.WriteLine(appConfig.NamedProperty); // returns "value"
Environment dependent examples
We can also load the configuration files depending on the build configuration (e.g. Debug/Release or DEV/QA/UAT):
Debug
Configuration file
example:
exampleSection:
namedProperty: debug
Release
Configuration file
example:
exampleSection:
namedProperty: release
Example 4:
Example where configurations are divided by folders:
|
+- config
| |
| +- debug
| | +- config.yml
| | +- other_config.yml
| |
| +- release
| +- config.yml
| +- other_config.yml
var config = new ConfigurationBuilder()
.AddEnvironmentDependentConfiguration(EnvironmentConfigurationSplitPrinciple.ByFolder, "config")
.Build();
var appConfig = config.GetSection<MyConfigModel>();
Console.WriteLine(appConfig.NamedProperty); // returns "debug" when configuration Debug and "release" when configuration Release
Example 5:
Example where configurations are divided by filenames
|
+- config
| +- config.debug.yml
| +- other_config.debug.yml
| +- config.release.yml
| +- other_config.release.yml
Using the file above we can set up the configuration module using an external file with the settings
var config = new ConfigurationBuilder()
.AddEnvironmentDependentConfiguration(EnvironmentConfigurationSplitPrinciple.ByFileName, "config")
.Build();
var appConfig = config.GetSection<MyConfigModel>();
Console.WriteLine(appConfig.NamedProperty); // returns "debug" when configuration Debug and "release" when configuration Release
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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. 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.0
- Microsoft.CSharp (>= 4.7.0)
- Microsoft.Extensions.Configuration.Binder (>= 8.0.0)
- Microsoft.Extensions.Configuration.EnvironmentVariables (>= 8.0.0)
- Microsoft.Extensions.Configuration.Ini (>= 8.0.0)
- Microsoft.Extensions.Configuration.UserSecrets (>= 8.0.0)
- Microsoft.Extensions.Configuration.Xml (>= 8.0.0)
- Tomlyn (>= 0.17.0)
- YamlDotNet (>= 13.7.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.