DotNetEnv 1.2.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package DotNetEnv --version 1.2.0
NuGet\Install-Package DotNetEnv -Version 1.2.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DotNetEnv" Version="1.2.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add DotNetEnv --version 1.2.0
#r "nuget: DotNetEnv, 1.2.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install DotNetEnv as a Cake Addin
#addin nuget:?package=DotNetEnv&version=1.2.0

// Install DotNetEnv as a Cake Tool
#tool nuget:?package=DotNetEnv&version=1.2.0

Windows build status License: MIT NuGet version

dotnet-env

A .NET library to load environment variables from .env files. Supports .NET Core and .NET Framework

Installation

Available on NuGet

Visual Studio:

PM> Install-Package DotNetEnv

.NET Core CLI:

dotnet add package DotNetEnv

Usage

Load env file

Load() will automatically look for a .env file in the current directory

DotNetEnv.Env.Load();

Or you can specify the path to the .env file

DotNetEnv.Env.Load("./path/to/.env");

It's also possible to load the (text) file as a Stream

using (var stream = File.OpenRead("./path/to/.env"))
{
    DotNetEnv.Env.Load(stream);
}

Accessing environment variables

The variables in the .env can then be accessed through the System.Environment class

System.Environment.GetEnvironmentVariable("IP");

Or through on of the helper methods:

DotNetEnv.Env.GetString("A_STRING");
DotNetEnv.Env.GetBool("A_BOOL");
DotNetEnv.Env.GetInt("AN_INT");
DotNetEnv.Env.GetDouble("A_DOUBLE");

The helper methods also has a optional second argument which specifies what value to return if the variable is not found:

DotNetEnv.Env.GetString("THIS_DOES_NOT_EXIST", "Variable not found");

Additional arguments

You can also control whitespace trimming and allowing hashes in values

DotNetEnv.Env.Load(false, false);

Both parameters default to true, which means:

  1. trimWhitespace, first arg: true in order to trim leading and trailing whitespace from keys and values such that
  KEY  =  value

Would then be available as

"value" == System.Environment.GetEnvironmentVariable("KEY")
null == System.Environment.GetEnvironmentVariable("  KEY  ")

False would mean:

"  value" == System.Environment.GetEnvironmentVariable("  KEY  ")
null == System.Environment.GetEnvironmentVariable("KEY")
  1. isEmbeddedHashComment, second arg: true in order to allow inline comments
KEY=value  # comment

Would then be available as

"value" == System.Environment.GetEnvironmentVariable("KEY")

False would mean:

"value  # comment" == System.Environment.GetEnvironmentVariable("KEY")

Which is most useful when you want to do something like:

KEY=value#moreValue#otherValue#etc
  1. unescapeQuotedValues, third arg: true in order to unescape/parse quoted (single or double) values as being strings with escaped chars such as newline ("\n"), but also handles unicode chars (e.g. "\u00ae" and "\U0001F680") -- note that you can always include unescaped unicode chars anyway (e.g. "日本") if your .env is in UTF-8. Also note that there is no need to escape quotes inside.
KEY="quoted\n\tvalue"

Would then be available as

"quoted
    value" == System.Environment.GetEnvironmentVariable("KEY")

False would mean:

"\"quoted\\n\\tvalue\"" == System.Environment.GetEnvironmentVariable("KEY")
  1. clobberExistingVars, fourth arg: false to avoid overwriting existing environment variables
KEY=value
System.Environment.SetEnvironmentVariable("KEY", "really important value, don't overwrite");
DotNetEnv.Env.Load(false, false, false, false); // fourth arg false, don't overwrite existing variables
System.Environment.GetEnvironmentVariable("KEY"); // == "really important value, don't overwrite"

Issue Reporting

If you have found a bug or if you have a feature request, please report them at this repository issues section.

License

This project is licensed under the MIT license. See the LICENSE file for more info.

Product 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.3 is compatible.  netstandard1.4 was computed.  netstandard1.5 was computed.  netstandard1.6 was computed.  netstandard2.0 was computed.  netstandard2.1 was computed. 
.NET Framework net46 was computed.  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. 
Universal Windows Platform uap was computed.  uap10.0 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (21)

Showing the top 5 NuGet packages that depend on DotNetEnv:

Package Downloads
hexasync.infrastructure.dotnetenv

Package Description

Corgibytes.Freshli.Lib

Core library for collecting historical metrics about a project's dependencies

CatConsult.EnvConfigurationProvider

A .NET Configuration Provider that offers a fluent API for loading and transforming environment variables from the OS and .env files

CatConsult.Extensions.EnvFileConfigurationProvider

Package Description

Rave.NET

Flutterwave RAVE Payment API Library for .NET.

GitHub repositories (7)

Showing the top 5 popular GitHub repositories that depend on DotNetEnv:

Repository Stars
mehdihadeli/food-delivery-microservices
🍔 A practical food delivery microservices, built with .Net 7, MassTransit, Domain-Driven Design, CQRS, Vertical Slice Architecture, Event-Driven Architecture, and the latest technologies.
Azure/data-api-builder
Data API builder provides modern REST and GraphQL endpoints to your Azure Databases and on-prem stores.
spark-dotnet/framework
Build production ready, full-stack web applications fast without sweating the small stuff.
mehdihadeli/food-delivery-modular-monolith
🌭 A practical food delivery modular monolith, built with .Net 7, Domain-Driven Design, CQRS, Vertical Slice Architecture, Event-Driven Architecture, and the latest technologies.
streetwriters/notesnook-sync-server
Sync server for Notesnook (not yet self-hostable)
Version Downloads Last updated
3.0.0 220,745 1/6/2024
2.5.0 1,275,143 2/3/2023
2.3.0 1,490,651 1/15/2022
2.2.0 393,456 9/18/2021
2.1.1 664,029 3/2/2021
2.1.0 10,029 2/22/2021
2.0.0 140,293 12/16/2020
1.4.0 806,915 12/9/2019
1.3.1 769 12/5/2019
1.2.0 468,745 4/5/2018
1.1.0 10,292 11/2/2017
1.0.1 4,110 6/18/2017
1.0.0 6,612 7/7/2016