如何在VS Code中运行C#测试前从.env加载环境变量
解决VS Code运行C# NUnit测试时加载.env环境变量的问题
下面提供几种无需依赖.runsettings文件的可行方案:
方案一:在测试代码中自动加载.env(推荐)
这种方法无需修改VS Code配置,不管是点击测试窗口运行还是命令行执行dotnet test,都会自动加载环境变量:
- 给测试项目安装
dotenv.netNuGet包:dotnet add package dotenv.net - 在测试项目中添加全局初始化类,用于加载.env文件:
这个类会在所有测试执行前运行一次,把.env里的变量注入到当前进程的环境变量中。using dotenv.net; using NUnit.Framework; [SetUpFixture] public class TestEnvironmentSetup { [OneTimeSetUp] public void LoadEnvVariables() { // 自动探测项目根目录的.env文件并加载 DotEnv.Load(new DotEnvOptions(probeForEnv: true)); } }
方案二:自定义VS Code测试任务注入环境变量
如果不想修改测试代码,可以通过自定义Shell任务加载.env并运行测试:
- 在项目根目录的
.vscode/tasks.json中添加以下配置:{ "version": "2.0.0", "tasks": [ { "label": "Run Tests with Env", "command": "bash", "args": [ "-c", "export $(grep -v '^#' .env | xargs) && dotnet test" ], "type": "shell", "group": { "kind": "test", "isDefault": true }, "problemMatcher": "$msCompile" } ] } - 回到VS Code测试窗口,点击测试集合旁的下拉按钮,选择「配置测试运行」,选中刚才创建的
Run Tests with Env任务。之后点击运行测试就会自动加载.env变量。
方案三:直接在VS Code设置中配置环境变量(适合少量变量)
如果.env中的变量数量少且不频繁变更,可以直接在.vscode/settings.json中硬编码测试用的环境变量:
{ "dotnet.unitTests.environmentVariables": { "YOUR_VAR_NAME": "var_value", "ANOTHER_VAR": "another_value" } }
注意这种方法需要手动同步.env和settings.json的变量值,适合变量较少的场景。
内容的提问来源于stack exchange,提问作者user23145140
相关产品推荐
相关产品推荐

