загрузка ядра appptings.s.son - PullRequest
       39

загрузка ядра appptings.s.son

0 голосов
/ 30 октября 2018

У меня есть проект ASP.NET Core (2.1) с appsettings.json. Я использую WebHost.CreateDefaultBuilder(). Файл appsettings.json имеет следующую конфигурацию в свойствах файла:

Build Action: Content
Копировать в выходной каталог: не копировать

После сборки appsettings.json заканчивается в bin\Debug\netcoreapp2.1\MyProj.runtimeconfig.json. Среда выполнения ASP.NET Core загружается нормально.

Я создал WebJobs (для .Net Core 2.1) и хотел сделать то же самое - установить Build Action на Content и позволить ему загружаться. В Main() Program.cs у меня есть код, подобный

var builder = new HostBuilder()
  ...
.ConfigureAppConfiguration(b =>
{
    var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

    b.SetBasePath(Directory.GetCurrentDirectory());
    b.AddJsonFile("appsettings.json", false, true);
    b.AddJsonFile($"appsettings.{environment}.json", true, true);
    b.AddEnvironmentVariables();

    // Adding command line as a configuration source
    if (args != null)
    {
        b.AddCommandLine(args);
    }
}

Но среда выполнения пытается загрузить appsettings.json (вместо MyWebJobProj.runtimeconfig.json). Поэтому мне пришлось установить для параметра «Действие сборки» значение «Нет» и для параметра «Копировать в выходной каталог» значение «Всегда». Однако я бы предпочел такой же подход, как в ASP.NET Core - он каким-то образом обрабатывает преобразование имени файла. Хотя в WebHost.CreateDefaultBuilder() в основном тот же код, что и в моем WebJob. Что означает волшебное преобразование имени файла в конфигурации и почему оно работает только в одном типе проекта?

1 Ответ

0 голосов
/ 02 ноября 2018

Файл [ProjName].runtimeconfig.json имеет совершенно другое значение, чем appsettings.json. Убедитесь, что appsettings.json было скопировано на выход (установите «Копировать на выход» на «всегда» или «новее»).

...