Когда вы запускаете проект ASP.NET Core из Visual Studio (2017), он предполагает, что рабочий каталог находится там, где находится исходный код, а не там, где на самом деле размещаются встроенные файлы.
Это означает, что когда я запускаю свой проект, он читает файл конфигурации из C:\Path\To\My\Project\appsettings.json
, а не из C:\Path\To\My\Project\bin\Debug\appsettings.json
.
Я вижу, что это тот случай, когда я отлаживаю этот код:
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureAppConfiguration((context, config) => {
config.SetBasePath(context.HostingEnvironment.ContentRootPath);
config.AddJsonFile("appsettings.json", true, false);
});
Где ContentRootPath
указывает на папку проекта, а не на место размещения встроенных файлов.
Вероятно, я мог бы исправить это, установив Working Directory
в Project Properties > Debug
, но, поскольку мы также используем преобразования конфигурации (SlowCheetah), у каждого разработчика будет своя собственная конфигурация сборки для вывода отладки (bin\Debug[CustomConfiguration]
), и изменение .csproj
для одного разработчика нарушает его для всех остальных разработчиков.
Есть ли способ заставить ASP.NET Core читать файлы конфигурации из папки, в которую помещаются встроенные файлы, а не в папку проекта, без необходимости изменять Working Directory
, но все же работать для нескольких «конфигураций сборки»?