dotnet-env: .NET 开发的环境变量加载工具

360影视 动漫周边 2025-05-17 08:42 2

摘要:在开发过程中,我们经常需要使用环境变量来配置应用程序,dotnet-env是一个 .NET 库,它可以从.env文件中加载环境变量。 这个库支持 .NET Core 和 .NET Framework(4.6 及以上版本)。方法会在当前目录查找如果想让程序向上级

在开发过程中,我们经常需要使用环境变量来配置应用程序,dotnet-env是一个 .NET 库,它可以从.env文件中加载环境变量。 这个库支持 .NET Core 和 .NET Framework(4.6 及以上版本)。方法会在当前目录查找如果想让程序向上级目录查找.env文件,可以使用你也可以指定文件的路径:DotNetEnv.Env.Load("./path/to/.env");

除了文件路径,还可以从流或字符串中加载内容:

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

DotNetEnv.Env.LoadContents("OK=GOOD\nTEST=\"more stuff\"");如果有多个文件,可以用按顺序加载:DotNetEnv.Env.LoadMulti(new { ".env", ".env2" });

注意:后面的文件中的变量会覆盖前面的值。

如果你不希望这样,可以使用方法。访问环境变量

加载完成后,可以通过以下方式访问环境变量:

• 使用 .NET 内置的方法:

System.Environment.GetEnvironmentVariable("IP");

• 或者使用 dotnet-env 提供的方法:

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

这些方法还支持设置默认值:

DotNetEnv.Env.GetString("THIS_DOES_NOT_EXIST", "未找到变量");高级设置你可以通过来控制加载行为:newDotNetEnv.LoadOptions(
setEnvVars:true
clobberExistingVars:true
onlyExactPath:true
)

推荐使用链式调用语法来设置选项:

DotNetEnv.Env.NoEnvVars.NoClobber.TraversePath.Load;参数说明:

1. setEnvVars:是否将.env中的变量写入系统环境变量。

• 默认为 true

• 设置为 false时,只读取变量,不会修改系统环境变量。

2. clobberExistingVars:是否覆盖已有的环境变量。

• 默认为 true

• 设置为 false时,保留已有环境变量。

3. onlyExactPath:是否仅在指定路径查找.env文件。dotnet-env 可以轻松集成到 .NET 的ConfigurationBuildervarconfiguration =newConfigurationBuilder
.AddDotNetEnv(".env", LoadOptions.TraversePath)
.Build;该功能会将__解析为,从而支持嵌套结构:APP__PORT=5000.env文件的格式简单易懂。简单赋值KEY=value支持的导出关键字exportKEY="value"
setKEY=value
SET KEY=value
set-x KEY=value插值语法KEY=${ENVVAR:-default}# 如果 ENVVAR 不存在,则使用 default
KEY=${ENVVAR?error}# 如果 ENVVAR 不存在,则返回 error
KEY=${ENVVAR:+alternative}# 如果 ENVVAR 存在,则使用 alternative多行值KEY="value
and more"Unicode 字符UTF8_BYTES="\xF0\x9F\x9A\x80" # 🚀
UTF16_BYTES="\uae" # ®

• 不要在生产环境中使用 .env文件。

这个工具主要用于本地开发。

• 生产环境应直接使用系统环境变量。

• .env文件应存储在安全的地方,例如 1Password、LastPass 或 S3。

团队成员可以下载一份用于本地开发。

• 环境变量应在程序启动时一次性加载。

不要在程序运行期间多次读取。

它可以帮你快速加载.env文件中的变量。

无论你是开发 Web 应用、微服务还是控制台程序,都可以使用它。

现在就去试试吧!🚀

GitHub 地址:https://github.com/tonerdo/dotnet-env

来源:opendotnet

相关推荐