Попытка использовать ConfigurationBuilder, но получить исключение FileLoadException - PullRequest
1 голос
/ 23 сентября 2019

Создание .NET Framework (4.7.2) службы Windows и попытка сослаться на несколько библиотек классов, ориентированных на .net стандарт 2.0

Я пытаюсь использовать более новые методы конфигурации с ConfigurationBuilder.например.

    config = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional:false)
            .Build();

Когда я пытаюсь запустить службу для отладки, она не запускается, и я получаю это в журнале приложений Windows

Версия Framework: v4.0.30319 Описание: Процесс был прерван из-за необработанного исключения.Информация об исключении: System.IO.FileLoadException

Файл (s) appsettings находится в целевой папке, но сборщик конфигурации не может загрузить их?

Я ссылаюсь на всепакеты:

Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Abstractions
Microsoft.Extensions.Configuration.Binder
Microsoft.Extensions.Configuration.Json
Microsoft.Extensions.FileProviders.Physical

[ обновление ]Хотя это связано с некоторыми из связанных вопросов, которые были предложены как дубликаты, это не то же самое.Я не публикую в Azure и не делаю этого из основного веб-приложения .net.Это из проекта службы Windows, в котором работает .net Framework 4.7

Сначала я подумал, что у него возникли проблемы с НАЙТИ файлов конфигурации json, но на самом деле это исключение FileLoadException https://docs.microsoft.com/en-us/dotnet/api/system.io.fileloadexception?view=netframework-4.8

, котороекажется, указывает на код, найденный файл, но просто не может открыть его?Странно, тем более что я работаю как локальный админ.

[обновление] Если я не могу понять это, я собираюсь в следующий раз попытаться создать свой сервис, не с .net framework 4.7, а с ядром .net и использовать пакет совместимости Windows, как в этом примереhttps://www.pmichaels.net/2019/01/08/creating-a-windows-service-using-net-core-2-2/

1 Ответ

0 голосов
/ 24 сентября 2019

Мое решение состояло в том, чтобы заменить службу новым проектом, начиная с консольного приложения .net core 2.2, затем используя этот класс вместе с «каналом» для управления им через службы Windows, как упоминалось в этой теме Как сделать Windows Service из .Net Core 2.1 / 2.2 Работает как чемпион,

...