dotenv.net
1.0.6
See the version list below for details.
dotnet add package dotenv.net --version 1.0.6
NuGet\Install-Package dotenv.net -Version 1.0.6
<PackageReference Include="dotenv.net" Version="1.0.6" />
paket add dotenv.net --version 1.0.6
#r "nuget: dotenv.net, 1.0.6"
// Install dotenv.net as a Cake Addin #addin nuget:?package=dotenv.net&version=1.0.6 // Install dotenv.net as a Cake Tool #tool nuget:?package=dotenv.net&version=1.0.6
dotenv.net
dotenv.net is a zero-dependency module that loads environment variables from a .env environment variable file into System.Environment
. It has built in support for the in-built dependency injection framework packaged with ASP.NET Core. It now comes packaged with an interface that allows for reading environment variables wihtout repeated calls to Environment.GetEnvironmentVariable("KEY");
. If you have ideas or issues, create an issue.
Contributors
Big ups to those who have contributed to this library. 👏
@bolorundurowb @joliveros @vizeke @merqlove @tracker1 @NaturalWill
Usage
Conventional
First install the library as a dependency in your application from nuget
Install-Package dotenv.net
or
dotnet add package dotenv.net
or for paket
paket add dotenv.net
Create a file with no filename and an extension of .env
.
A sample .env
file would look like this:
DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
in the Startup.cs
file or as early as possible in your code add the following:
using dotenv.net;
...
DotEnv.Config();
the values saved in your .env
file would be avaibale in your application and can be accessed via
Environment.GetEnvironmentVariable("DB_HOST"); // would output 'localhost'
Using with DI (IServiceCollection
)
If using with ASP.NET Core or any other system that uses IServiceCollection
for its dependency injection, in the Startup.cs
file
public void ConfigureServices(IServiceCollection services)
{
...
// configure dotenv
services.AddEnv(builder => {
builder
.AddEnvFile("/custom/path/to/your/env/vars")
.AddThrowOnError(false)
.AddEncoding(Encoding.ASCII);
});
}
With this, your application would have the env file variables imported.
Options
ThrowError
Default: true
You can specify if you want the library to error out if any issue arises or fail silently.
DotEnv.Config(false); //fails silently
Path
Default: .env
You can specify a custom path if your file containing environment variables is named or located differently.
DotEnv.Config(true, "/custom/path/to/your/env/vars");
Encoding
Default: Encoding.UTF8
You may specify the encoding of your file containing environment variables using this option.
DotEnv.Config(true, ".env", Encoding.Unicode);
Trim Values
Default: true
You may specify whether or not you want the values retrieved to be trimmed i.e have all leading and trailing whitepaces removed.
DotEnv.Config(true, ".env", Encoding.Unicode, false);
Support For IEnvReader
With v1.0.6
and above an interface IEnvReader
has been introduced that specifies methods that help with reading values from the environment easily. The library has a default implementation EnvReader
that can be added to the default ASP.NET Core DI framework (IServiceCollection
).
Using EnvReader
using dotenv.net.Utilities;
...
var envReader = new EnvReader();
var value = envReader.GetValue("KEY");
Using IEnvReader
with DI
In the StartUp.cs
file, in the ConfigureServices
method
...
public void ConfigureServices(IServiceCollection services)
{
...
services.AddEnvReader();
...
}
In the rest of your application, the IEnvReader
interface can get injected and used. For example, in a SampleController
class for example:
public class SampleController
{
private readonly IEnvReader _envReader;
public SampleController(IEnvReader envReader)
{
_envReader = envReader;
}
}
IEnvReader Methods
string GetValue(string key)
Default: null
Retrieve a value from the current environment by the given key and return null
if a value does not exist for that key.
T GetValue<T>(string key)
Default: default(T)
A generic method that allows for a typed value to be retrieved from the environment variables and returns the default for the type. This functionality is limited to struct
s currently.
bool TryGetValue(string key, out string value)
Default: null
A safer method to use when retrieving values from the environment as it returns a boolean value stating whether it successfully retrieved the value required.
bool TryGetValue<T>(string key, out T value)
Default: default(T)
A safer method to use when retrieving values from the environment as it returns a boolean value stating whether it successfully retrieved and coverted the value required.
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 | netcoreapp1.0 was computed. netcoreapp1.1 was computed. netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard1.6 is compatible. 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 | tizen30 was computed. 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 1.6
- Microsoft.Extensions.DependencyInjection (>= 1.1.1)
- System.ComponentModel.TypeConverter (>= 4.3.0)
- System.Memory (>= 4.5.3)
-
.NETStandard 2.0
- Microsoft.Extensions.DependencyInjection (>= 1.1.1)
- System.ComponentModel.TypeConverter (>= 4.3.0)
- System.Memory (>= 4.5.3)
NuGet packages (23)
Showing the top 5 NuGet packages that depend on dotenv.net:
Package | Downloads |
---|---|
NetBricks
Commonly used tooling for dotnetcore, including configuration management, logging, etc. |
|
CodeZero
CodeZero is a set of common implementations to help you implementing Clean Architecture, DDD, CQRS, Specification Patterns and another facilities for new modern web applications is an open-source project written in .NET Core. |
|
MCMS.Base
MCMS Base package |
|
Injector
Injects values into config files directly or via environment variables. Can inject app settings, connection strings, or WCF client endpoints. |
|
CasAuth
The Comprehensive Authentication Solution (or CasAuth) was developed to provide an opinionated way to handle user and service authentication for APIs. |
GitHub repositories (3)
Showing the top 3 popular GitHub repositories that depend on dotenv.net:
Repository | Stars |
---|---|
Green-Software-Foundation/carbon-aware-sdk
Carbon-Aware SDK
|
|
redis/NRedisStack
Redis Stack .Net client
|
|
Azure/azure-sdk-tools
Tools repository leveraged by the Azure SDK team.
|
Version | Downloads | Last updated |
---|---|---|
3.2.1 | 48,830 | 9/21/2024 |
3.2.0 | 173,535 | 6/22/2024 |
3.1.3 | 540,812 | 11/5/2023 |
3.1.2 | 1,882,215 | 11/25/2022 |
3.1.1 | 742,109 | 10/11/2021 |
3.1.0 | 109,831 | 7/11/2021 |
3.0.0 | 313,986 | 3/19/2021 |
2.1.3 | 210,878 | 1/18/2021 |
2.1.1 | 180,991 | 5/26/2020 |
2.1.0 | 124,157 | 4/1/2020 |
2.0.1 | 1,876 | 3/27/2020 |
2.0.0 | 1,137 | 3/25/2020 |
1.0.6 | 403,421 | 6/29/2019 |
1.0.5 | 1,279 | 6/27/2019 |
1.0.4 | 118,643 | 10/21/2018 |
1.0.3 | 24,590 | 2/17/2018 |
1.0.2 | 1,521 | 1/15/2018 |
1.0.1 | 1,605 | 12/31/2017 |
1.0.0 | 8,444 | 11/22/2017 |
- Rework the app logic to make more maintainable
- Increase speed and reduce memory allocations by replacing string manipulation with IReadOnlySpan<T>.
- Add class for reading environment variables as strings and typed values
- Improve testing and upgrade CI config