dotenv.net 4.0.0

dotenv.net 🌟

CI - Build, Test & Coverage License: MIT Coverage Status NuGet Version

project icon

dotenv.net is a lightweight and intuitive library designed to simplify the process of managing environment variables in .NET applications. By seamlessly integrating with .env files, it allows developers to maintain a clean and secure configuration setup, ensuring that sensitive information is kept out of source code. 🔒

Whether you're building a small project or a large-scale application, dotenv.net provides the tools you need to efficiently load, read, and manage environment variables, with support for dependency injection (DI) in popular DI systems. 🛠️


Why Use dotenv.net? 🤔

  • Simple and Pain-Free 🎯: Easily load and read .env files with minimal setup.
  • Flexible Configuration 🔧: Customize how environment variables are loaded with a variety of options.
  • Dependency Injection Support 🧩: Works seamlessly with popular DI frameworks.
  • Cross-Platform 🌍: Fully compatible with .NET Core, .NET 5, and beyond.
  • Open Source 💡: Actively maintained and supported by the community.

Getting Started 🚀

Installation 📦

You can install dotenv.net via NuGet:

  • Using the .NET CLI:

    dotnet add package dotenv.net
    
  • Using Visual Studio Package Manager:

    Install-Package dotenv.net
    
  • Manual Installation (via .csproj):

    <PackageReference Include="dotenv.net" Version="4.0.0"/>
    

Usage 🛠️

Basic Setup 🏗️

  1. Add the Namespace:

    using dotenv.net;
    
  2. Load Environment Variables:

    DotEnv.Load();
    

    This will automatically locate and load the .env file in the same directory as your application.


Advanced Configuration ⚙️

dotenv.net offers a wide range of configuration options to tailor the loading process to your needs:

  • Specify Custom .env File Paths:

    DotEnv.Load(options: new DotEnvOptions(envFilePaths: new[] {"./path/to/env", "./path/to/second/env"}));
    
  • Enable Exception Handling:

    DotEnv.Load(options: new DotEnvOptions(ignoreExceptions: false));
    
  • Search for .env Files in Parent Directories:

    DotEnv.Load(options: new DotEnvOptions(probeForEnv: true, probeLevelsToSearch: 2));
    
  • Trim Whitespace from Values:

    DotEnv.Load(options: new DotEnvOptions(trimValues: true));
    
  • Skip Overwriting Existing Environment Variables:

    DotEnv.Load(options: new DotEnvOptions(overwriteExistingVars: false));
    
  • Support the Export Syntax:

    DotEnv.Load(options: new DotEnvOptions(supportExportSyntax: true));
    

Reading Environment Variables 📖

Use the Read() method to retrieve environment variables without modifying the system environment:

var envVars = DotEnv.Read();
Console.WriteLine(envVars["KEY"]); // Outputs the value associated with 'KEY'

Fluent API 🎨

For a more expressive syntax, dotenv.net provides a fluent API:

// Load environment variables with custom options
DotEnv.Fluent()
    .WithExceptions()
    .WithEnvFiles("./path/to/env")
    .WithTrimValues()
    .WithEncoding(Encoding.ASCII)
    .WithOverwriteExistingVars()
    .WithProbeForEnv(probeLevelsToSearch: 6)
    .WithSupportExportSyntax()
    .Load();

// Read environment variables
var envVars = DotEnv.Fluent()
    .WithoutExceptions()
    .WithEnvFiles() // Defaults to .env
    .WithoutTrimValues()
    .WithDefaultEncoding()
    .WithoutOverwriteExistingVars()
    .WithoutProbeForEnv()
    .WithoutSupportExportSyntax()
    .Read();

Environment Variable Helpers 🛠️

The Utilities namespace provides additional methods for reading environment variables in a typed manner:

using dotenv.net.Utilities;

var stringValue = EnvReader.GetStringValue("KEY");
var intValue = EnvReader.GetIntValue("PORT");
var boolValue = EnvReader.GetBooleanValue("ENABLE_FEATURE");

Available Methods 📋

Method Name Description Return Type Default (if applicable)
HasValue(string key) Checks if a value is set for the given key. bool N/A
GetStringValue(string key) Retrieves a string value by key. Throws an exception if not found. string N/A
GetIntValue(string key) Retrieves an integer value by key. Throws an exception if not found. int N/A
GetDoubleValue(string key) Retrieves a double value by key. Throws an exception if not found. double N/A
GetDecimalValue(string key) Retrieves a decimal value by key. Throws an exception if not found. decimal N/A
GetBooleanValue(string key) Retrieves a boolean value by key. Throws an exception if not found. bool N/A
TryGetStringValue(string key, out string value) Safely retrieves a string value. Returns true if successful. bool null
TryGetIntValue(string key, out int value) Safely retrieves an integer value. Returns true if successful. bool 0
TryGetDoubleValue(string key, out double value) Safely retrieves a double value. Returns true if successful. bool 0.0
TryGetDecimalValue(string key, out decimal value) Safely retrieves a decimal value. Returns true if successful. bool 0.0m
TryGetBooleanValue(string key, out bool value) Safely retrieves a boolean value. Returns true if successful. bool false

Contributing 🤝

We welcome contributions from the community! If you have ideas, bug reports, or feature requests, please open an issue or submit a pull request.

Special Thanks to Our Contributors 🙏

A huge shoutout to everyone who has contributed to dotenv.net:

@bolorundurowb @joliveros @vizeke
@merqlove @tracker1 @NaturalWill
@texyh @jonlabelle @Gounlaf
@DTTerastar @Mondonno @caveman-dick
@VijoPlays bobbyg603


License 📜

dotenv.net is licensed under the MIT License. See the LICENSE file for more details.


Get Started Today! 🎉

Simplify your environment variable management with dotenv.net. Install the package, follow the quick start guide, and enjoy a cleaner, more secure configuration setup for your .NET applications.

Happy Coding! 🚀

No packages depend on dotenv.net.

- support quotation escape support

.NET Standard 2.0

.NET Standard 2.1

  • No dependencies.

Version Downloads Last updated
4.0.0 4 07/12/2025
3.2.1 74 09/21/2024
3.2.0 50 07/23/2024
3.1.3 101 02/05/2024
3.1.2 52 07/23/2024
3.1.1 49 07/23/2024
3.1.0 51 07/23/2024
3.0.0 50 07/23/2024
2.1.3 50 07/23/2024
2.1.1 52 07/23/2024
2.1.0 50 07/23/2024
2.0.1 51 07/23/2024
2.0.0 53 07/23/2024
1.0.6 56 07/23/2024
1.0.5 50 07/23/2024
1.0.4 41 07/23/2024
1.0.3 62 07/23/2024
1.0.2 52 07/23/2024
1.0.1 50 07/23/2024
1.0.0 42 07/23/2024