Я создал службу Windows с .Net Core 2.2, используя Microsoft.Extensions.Hosting и консольное приложение.Я использовал ConfigurationBuilder для включения служб конфигурации json следующим образом:
string environment = System.Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{environment}.json", optional: true)
.AddEnvironmentVariables()
.Build();
При отладке в Visual Studio базовый путь корректно устанавливается в текущий каталог.Переменная среды «ASPNETCORE_ENVIRONMENT» задается как на уровне пользователя, так и на уровне системы, а файлы конфигурации правильно распознаются и используются.Однако, когда я устанавливаю в качестве службы Windows, базовый путь становится C: \ Windows \ system32, и я еще не получил вызов переменных среды для работы.Я мог бы просто жестко кодировать базовый путь и помещать туда свои файлы конфигурации, но я терял гибкость.Мне также нужно иметь возможность читать значения файла конфигурации внутри метода внутри процесса, привязанного к событию.
Существует ли какой-либо способ чтения переменных среды для установки базового пути и чтения файлов конфигурации в методе, привязанном к событию