- Переменные среды устанавливаются в Windows.
В настоящее время переменная среды CENTRAL_APPLICATION_SETTINGS не установлена, и, вероятно, именно поэтому вы получаете исключение.
Вы не можете получить значения конфигурации из библиотеки классов.
По умолчанию параметры конфигурации загружаются из исполняемого файла (проект, который создает exe).
.Net core может загружать значения конфигурации из различных типов конфигураций (командная строка, XML/ JSON-файлы и т. Д.). Ниже приведен пример из MSDN:
public class Program
{
public static Dictionary<string, string> arrayDict = new Dictionary<string, string>
{
{"array:entries:0", "value0"},
{"array:entries:1", "value1"},
{"array:entries:2", "value2"},
{"array:entries:4", "value4"},
{"array:entries:5", "value5"}
};
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.SetBasePath(Directory.GetCurrentDirectory());
config.AddInMemoryCollection(arrayDict);
config.AddJsonFile("json_array.json", optional: false, reloadOnChange: false);
config.AddJsonFile("starship.json", optional: false, reloadOnChange: false);
config.AddXmlFile("tvshow.xml", optional: false, reloadOnChange: false);
config.AddEFConfiguration(options => options.UseInMemoryDatabase("InMemoryDb"));
config.AddCommandLine(args);
})
.UseStartup<Startup>();
}
Один подход для решения вашей проблемы:
Я полагаю, вы должны установить CopyToOutput на TRUEэтот файл центральной конфигурации, чтобы он был скопирован в исполняемый файл.
Затем вы можете загрузить конфигурацию, просто вызвав AddJsonFile или AddXmlFile.Надеюсь, что это поможет вам решить вашу проблему.
Это также уменьшит ваш код и повысит удобство обслуживания, так как при загрузке конфигураций настройки не требуются.
Надеюсь, это поможет.