CustomEnvironmentConfig 1.1.0
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.0
NuGet\Install-Package CustomEnvironmentConfig -Version 1.1.0
<PackageReference Include="CustomEnvironmentConfig" Version="1.1.0" />
<PackageVersion Include="CustomEnvironmentConfig" Version="1.1.0" />
<PackageReference Include="CustomEnvironmentConfig" />
paket add CustomEnvironmentConfig --version 1.1.0
#r "nuget: CustomEnvironmentConfig, 1.1.0"
#:package CustomEnvironmentConfig@1.1.0
#addin nuget:?package=CustomEnvironmentConfig&version=1.1.0
#tool nuget:?package=CustomEnvironmentConfig&version=1.1.0
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 set to be 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. 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. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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.1 | 9,180 | 1/14/2025 | |
| 8.0.0 | 1,308 | 9/24/2024 | |
| 2.1.0 | 262 | 9/24/2024 | |
| 2.0.1 | 6,068 | 7/24/2023 | |
| 2.0.0 | 387 | 7/24/2023 | |
| 1.7.1 | 3,825 | 3/1/2022 | |
| 1.7.0 | 763 | 3/1/2022 | |
| 1.6.3 | 7,180 | 10/4/2021 | |
| 1.6.2 | 718 | 10/4/2021 | |
| 1.6.1 | 635 | 10/4/2021 | |
| 1.6.0 | 2,214 | 1/11/2021 | |
| 1.5.0 | 1,137 | 11/18/2020 | |
| 1.4.1 | 3,445 | 7/9/2020 | |
| 1.4.0 | 846 | 6/29/2020 | |
| 1.3.0 | 2,010 | 5/5/2020 | |
| 1.2.3 | 2,202 | 6/18/2019 | |
| 1.2.2 | 1,293 | 4/30/2019 | |
| 1.2.1 | 955 | 4/16/2019 | |
| 1.2.0 | 942 | 4/10/2019 | |
| 1.1.0 | 930 | 3/6/2019 |