Я отлаживаю в do tnet core 3.1 проект webapi в коде Visual Studio. У меня есть один appsettings.json
и один appsettings.Development.json
в моем проекте, которые отличаются по содержанию.
Вот конфигурация отладки при нажатии F5 внутри кода. Это можно найти в .vscode / launch. json в разделе «конфигурации»
{
"name": "Launch API",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/CommercialPaper.API/bin/Debug/netcoreapp3.1/CommercialPaper.API.dll",
"args": [],
"cwd": "${workspaceFolder}/CommercialPaper.API",
"stopAtEntry": false,
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"sourceFileMap": {
"/Views": "${workspaceFolder}/Views"
}
}
Как видно, env "Development" нацелен в режиме отладки. Тем не менее, когда внутри моего кода я ссылаюсь на этот конфиг, он загружает значение из файла json, не относящегося к разработке, то есть appsettings.json
.
. Я даже пытался заставить это поведение изменить конструктор моего автозагрузки. класс .cs, но это тоже не работает. Кажется, я вынужден физически удалить appsettings.json
, чтобы он заработал.
public Startup(IConfiguration config, IWebHostEnvironment env)
{
var builder = new ConfigurationBuilder().SetBasePath(env.ContentRootPath);
if (env.IsDevelopment())
{
builder.AddJsonFile($"appsettings.Development.json", optional: false, reloadOnChange: true);
}
else
{
builder.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
}
Configuration = builder.Build();
}
Я что-то не так делаю, или это умышленно?
Ура