dotenv.net
2.0.0
See the version list below for details.
dotnet add package dotenv.net --version 2.0.0
NuGet\Install-Package dotenv.net -Version 2.0.0
<PackageReference Include="dotenv.net" Version="2.0.0" />
paket add dotenv.net --version 2.0.0
#r "nuget: dotenv.net, 2.0.0"
// Install dotenv.net as a Cake Addin #addin nuget:?package=dotenv.net&version=2.0.0 // Install dotenv.net as a Cake Tool #tool nuget:?package=dotenv.net&version=2.0.0
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 @texyh
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 | 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
- Autofac (>= 4.9.4)
- Microsoft.Extensions.DependencyInjection (>= 3.1.3)
- System.Memory (>= 4.5.4)
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 | 69,738 | 9/21/2024 |
3.2.0 | 186,020 | 6/22/2024 |
3.1.3 | 558,851 | 11/5/2023 |
3.1.2 | 1,930,578 | 11/25/2022 |
3.1.1 | 745,035 | 10/11/2021 |
3.1.0 | 110,469 | 7/11/2021 |
3.0.0 | 320,268 | 3/19/2021 |
2.1.3 | 211,585 | 1/18/2021 |
2.1.1 | 181,322 | 5/26/2020 |
2.1.0 | 124,728 | 4/1/2020 |
2.0.1 | 1,885 | 3/27/2020 |
2.0.0 | 1,159 | 3/25/2020 |
1.0.6 | 404,239 | 6/29/2019 |
1.0.5 | 1,287 | 6/27/2019 |
1.0.4 | 118,815 | 10/21/2018 |
1.0.3 | 24,778 | 2/17/2018 |
1.0.2 | 1,529 | 1/15/2018 |
1.0.1 | 1,612 | 12/31/2017 |
1.0.0 | 8,583 | 11/22/2017 |
- Add support for IoC with AutoFac.
- Re-engineer the env reader
- Update tests and improve coverage
- Support values surrounded by quotes