命令行运行.NET Core 3.1应用时DOTNET_ENVIRONMENT配置被忽略问题
.NET Core 3.1 命令行无法读取appsettings.Development.json 排查方案
1. 确认文件存在与复制配置
- 首先确认项目根目录下存在
appsettings.Development.json文件 - 右键该文件在Visual Studio中打开属性页,确认「复制到输出目录」配置为 如果较新则复制 或 始终复制,避免编译后输出目录缺少该文件
2. 确认命令执行的工作目录
- Visual Studio启动项目时默认工作目录为
.csproj文件所在的项目根目录,命令行执行时需要保持相同的工作目录:- 执行
dotnet run命令时,需要cd到包含.csproj的项目根目录下运行 - 执行编译后的dll(
dotnet 你的项目名.dll)时,需要cd到包含该dll的输出目录下运行,且该目录下要有对应的配置文件
- 执行
3. 确认环境变量配置正确
- .NET Core 3.1识别的环境变量名为
ASPNETCORE_ENVIRONMENT,你提到的ASPNET_ENVIRONMENT是旧版ASP.NET Framework的变量,无法被.NET Core识别 - 在执行启动命令前,先在当前终端执行命令验证环境变量是否生效:
- Windows cmd:
echo %ASPNETCORE_ENVIRONMENT%、echo %DOTNET_ENVIRONMENT% - Windows PowerShell:
$env:ASPNETCORE_ENVIRONMENT、$env:DOTNET_ENVIRONMENT - Linux/macOS终端:
echo $ASPNETCORE_ENVIRONMENT、echo $DOTNET_ENVIRONMENT
- Windows cmd:
- 如果输出不是
Development,可以临时在当前终端指定变量后启动:
Windows cmd示例:
PowerShell示例:set ASPNETCORE_ENVIRONMENT=Development dotnet run
Linux/macOS示例:$env:ASPNETCORE_ENVIRONMENT="Development" dotnet runASPNETCORE_ENVIRONMENT=Development dotnet run
4. 检查配置加载逻辑
- 如果你在
Program.cs中自定义了ConfigureAppConfiguration配置,确认没有遗漏环境配置文件的加载逻辑,默认加载逻辑参考:config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
内容的提问来源于stack exchange,提问作者JoelFan
相关产品推荐
相关产品推荐

