CustomEnvironmentConfig 1.1.1
System.Text.Json had a serious vulnerability that is addressed in 2.0.0 or higher.
See the version list below for details.
dotnet add package CustomEnvironmentConfig --version 1.1.1
NuGet\Install-Package CustomEnvironmentConfig -Version 1.1.1
<PackageReference Include="CustomEnvironmentConfig" Version="1.1.1" />
paket add CustomEnvironmentConfig --version 1.1.1
#r "nuget: CustomEnvironmentConfig, 1.1.1"
// Install CustomEnvironmentConfig as a Cake Addin #addin nuget:?package=CustomEnvironmentConfig&version=1.1.1 // Install CustomEnvironmentConfig as a Cake Tool #tool nuget:?package=CustomEnvironmentConfig&version=1.1.1
dotnetcore-custom-env
Enables binding environment variables and/or environment files to classes.
Example
(.env [environment variables])
MyConfigItem=Test Value
Subclass_MyConfigSubItem=Test Subitem Value
(MyConfiguration.cs)
public class MyConfiguration
{
[ConfigItem]
public string MyConfigItem { get; set; }
[ConfigItem]
public MyConfigSubClass Subclass { get; set; }
}
public class MyConfigSubClass
{
[ConfigItem]
public string MyConfigSubItem { get; set; }
}
(Program.cs)
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseEnvironmentConfiguration<MyConfiguration>()
.....
(Startup.cs)
public class Startup
{
private readonly MyConfiguration _configuration;
public Startup(MyConfiguration configuration)
{
_configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
...
Console.WriteLine(_configuration.MyConfigItem);
Console.WriteLine(_configuration.Subclass.MyConfigSubItem);
...
}
}
If you want, you can re-map the name of the items using [ConfigItem]:
public class MyConfiguration
{
[ConfigItem("MyItem")]
public bool Item { get; set; }
// OR
[ConfigItem(Name = "MyOtherItem")]
public int OtherItem { get; set; }
[ConfigItem("Test")
public SubConfiguration MySubClass { get; set; }
}
public class SubConfiguration
{
[ConfigItem]
public bool SubItem { get; set; }
}
The environment variables for this would look like as follows:
MyItem=Value
MyOtherItem=Value
Test_SubItem=Value
You can also set if the item is required to be set in the environment or not. By default, items are required.
public class MyConfiguration
{
[ConfigItem(Required = ConfigItemRequirement.NotRequired)]
public bool NotRequiredItem { get; set; }
// OR
[ConfigItem(Name = "MyOtherItem", Required = ConfigItemRequirement.Required)]
public int OtherItem { get; set; }
}
From an Env File:
Most of this applies from above, except instead your IWebHostBuilder would look like:
// Program.cs
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseEnvironmentConfiguration<MyConfiguration>(fileName: "filename.env", requireFile: true)
.....
Non-DI:
To parse environment variables directly:
public void MyFunction()
{
// Use environment variable repository or your own custom one that implements IEnvironmentVariableRepository
var parser = new ConfigurationParser(new EnvironmentVariableRepository());
var output = parser.ParseConfiguration<MyClass>();
// Access your class via output variable
}
To parse from an environment file:
public void MyFunction()
{
// Use environment variable repository or your own custom one that implements IEnvironmentVariableRepository
var parser = new ConfigurationParser(new EnvironmentFileRepository(fileName: "filename.env", requireFile: true));
var output = parser.ParseConfiguration<MyClass>();
// Access your class via output variable
}
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.AspNetCore.Hosting.Abstractions (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 2.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
8.0.0 | 309 | 9/24/2024 | |
2.1.0 | 80 | 9/24/2024 | |
2.0.1 | 4,041 | 7/24/2023 | |
2.0.0 | 237 | 7/24/2023 | |
1.7.1 | 3,565 | 3/1/2022 | |
1.7.0 | 519 | 3/1/2022 | |
1.6.3 | 6,866 | 10/4/2021 | |
1.6.2 | 469 | 10/4/2021 | |
1.6.1 | 396 | 10/4/2021 | |
1.6.0 | 1,950 | 1/11/2021 | |
1.5.0 | 816 | 11/18/2020 | |
1.4.1 | 3,173 | 7/9/2020 | |
1.4.0 | 584 | 6/29/2020 | |
1.3.0 | 1,742 | 5/5/2020 | |
1.2.3 | 1,902 | 6/18/2019 | |
1.2.2 | 1,006 | 4/30/2019 | |
1.2.1 | 685 | 4/16/2019 | |
1.2.0 | 666 | 4/10/2019 | |
1.1.2 | 766 | 3/6/2019 | |
1.1.1 | 653 | 3/6/2019 | |
1.1.0 | 648 | 3/6/2019 | |
1.0.1 | 905 | 2/19/2019 | |
1.0.0 | 762 | 2/19/2019 |