do tnet core webapi appsettings.Development. json не используется в режиме разработки в сравнении с кодом - PullRequest
0 голосов
/ 27 апреля 2020

Я отлаживаю в 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();
        }

Я что-то не так делаю, или это умышленно?

Ура

...