Configuration.Extensions.EnvironmentFile
2.0.0
dotnet add package Configuration.Extensions.EnvironmentFile --version 2.0.0
NuGet\Install-Package Configuration.Extensions.EnvironmentFile -Version 2.0.0
<PackageReference Include="Configuration.Extensions.EnvironmentFile" Version="2.0.0" />
paket add Configuration.Extensions.EnvironmentFile --version 2.0.0
#r "nuget: Configuration.Extensions.EnvironmentFile, 2.0.0"
// Install Configuration.Extensions.EnvironmentFile as a Cake Addin #addin nuget:?package=Configuration.Extensions.EnvironmentFile&version=2.0.0 // Install Configuration.Extensions.EnvironmentFile as a Cake Tool #tool nuget:?package=Configuration.Extensions.EnvironmentFile&version=2.0.0
Configuration.Extensions.EnvironmentFile
Unix style Environment files to configure .Net core applications
ConnectionStrings__Logs=User ID=root;Password=myPassword;Host=localhost;Port=5432;Database=myDataBase;
#Security section -- this line is omitted by the configuration provider
Security__Jwt__Key=q2bflxWAHB4fAHEU
Security__Jwt__ExpirationTime=00:05:00
Security__Jwt__Audience=https://always-use-https.com
Motivation
Having a development environment that resembles as much as possible to production is the best.
In Unix servers, you can configure your background services with an environment file that has the format specified above, but what about in local?
So many options but none matches that, so you can have them now, having a .env
file (or more) copied with your files on build and loaded in the configuration.
How to use it
Install the package via Nuget
Install-Package Configuration.Extensions.EnvironmentFile
or .Net core command line
dotnet add package Configuration.Extensions.EnvironmentFile
Then configure your app like:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config
.AddEnvironmentFile()
.AddEnvironmentVariables(prefix: "MyCustomPrefix_");
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
Default behavior
- The variables are loaded from a file called
.env
that is placed in the same directory as your applications. - Trimming is performed (usually spaces at the end are mistakes).
- No quotes in values are trimmed (there is no need to add quotes, the library will handle
=
just fine).
public static IHostBuilder CreateHostBuilder(string[] args)
{
Host
.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config
.AddEnvironmentFile(removeWrappingQuotes: true, trim: false)
.AddEnvironmentVariables();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
Load multiple files
You can have several files also loaded, remember the last file will override the first one (if same variables are present)
public static IHostBuilder CreateHostBuilder(string[] args)
{
Host
.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config
.AddEnvironmentFile() // Configuring from '.env' file
.AddEnvironmentFile("database-config.env") // Overriding with 'database-config.env'
.AddEnvironmentVariables(); // Overriding with environment variables
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
Variable prefixes
You can specify variable prefixes to be omitted
public static IHostBuilder CreateHostBuilder(string[] args)
{
Host
.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config
.AddEnvironmentFile() // Configuring from '.env' file
.AddEnvironmentFile("with-prefix.env") // Variables like MyPrefix_MyVariable are loaded as MyPrefix_MyVariable
.AddEnvironmentFile("with-prefix.env", prefix: "MyPrefix_") // Variables like MyPrefix_MyVariable are loaded as MyVariable
.AddEnvironmentVariables(); // Overriding with environment variables
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
Reload configuration on file change
Configuration can automatically update on file changes
public static IHostBuilder CreateHostBuilder(string[] args)
{
Host
.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config
.AddEnvironmentFile() // Configuring from '.env' file
.AddEnvironmentFile("reloadable.env", reloadOnChange: true) // This file will be watched for changes
.AddEnvironmentVariables(); // Overriding with environment variables
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
Logo Provided by Vecteezy
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
- Microsoft.Extensions.Configuration (>= 3.0.0)
- Microsoft.Extensions.Configuration.FileExtensions (>= 3.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Dropped support for Microsoft.Extensions.Configuration < 3.0.0