Как ASPNET Core разрешает путь конфигурации - PullRequest
0 голосов
/ 25 марта 2019

У меня есть следующий код:

 var config = new ConfigurationBuilder();

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

Прекрасно работает в среде разработки и на производстве. Однако, если я размещу это:

    Raise<FileNotFoundException>.If(File.Exists(Path.Combine(Directory.GetCurrentDirectory(), "appsettings.json")),
        $"Could not find the settings file");

Возникает исключение во время сеансов отладки и сеансов выпуска (в основном, когда приложение не публикуется и не выполняется из Visual Studio), этот файл не может быть найден, что является своего рода правильным, поскольку VS2017 не копирует файл настроек в папку отладки и вместо этого храните их в исходной папке. Итак, мой вопрос, как ядро ​​dotnet разрешает путь конфигурации для ядра aspnet?

1 Ответ

0 голосов
/ 25 марта 2019

Я думаю, вы запутались в вещах здесь. Конфигурация по умолчанию извлекается из каталога точки входа. Внутри Visual Studio или при запуске dotnet run из командной строки в корневом каталоге проекта все работает нормально. Кроме того, когда вы публикуете , опубликованный каталог будет содержать файлы конфигурации вместе с DLL точки входа, так что это также будет работать нормально.

То, о чем вы, похоже, говорите, работает из каталога bin, что не поддерживается. Каталог bin фактически является кешем. Это не опубликованная версия вашего приложения, поэтому его нельзя запускать так, как если бы он был.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...