Использование файл конфигурации appsettings.json в консольном приложении .Net Core
Консольное приложение .NET core — это удивительный базовый шаблон приложения, который позволяет быстро создать приложение и проверить свои идеи. В то же время его также можно использовать для создания готового к производству приложения. Поскольку это легкий шаблон приложения, в нем нет таких функций, как конфигурация или внедрение зависимостей. Файл Appsettings.json используется для хранения настроек в приложении .NET Core, этот же файл можно добавить в консольное приложение .NET Core для хранения настроек приложения. Следующие шаги помогут вам создать, написать и прочитать конфигурацию appsettings.json
. файл в вашем консольном приложении .Net Core Поскольку консольное приложение .NET core не имеет встроенного внедрения зависимостей, функции, от которых зависит приложение, такие как конфигурация, недоступны. В полноценном основном приложении ASP.net конфигурация доступна с использованием внедренного интерфейса IConfiguration по умолчанию. В основное консольное приложение .NET Конфигурацию можно добавить с помощью класса ConfigurationBuilder. Кроме того, также может быть добавлена поддержка настройки приложения с помощью файла Json, переменных среды, командной строки или с помощью настраиваемого поставщика конфигурации.
Типы IConfiguration
и ConfigurationBuilder
доступны в Microsoft.Extensions.Configuration
пакете. Расширения для добавления файла json, например appsettings.json, в качестве источника конфигурации доступны в Microsoft.Extensions.Configuration.Json
пакете nuget. Расширения для добавления переменных среды в качестве источника конфигурации доступны в пакете nuget Microsoft.Extensions.Configuration.EnvironmentVariables
. Расширения для добавления командной строки в качестве источника конфигурации доступны в Microsoft.Extensions.Configuration.CommandLine
пакете nuget.
Первым делом до отредактируем .csproj
файл и добавим в него следующие строки.
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
Эти строки гарантируют, что appsettings.json
файл будет скопирован в свойство Output Directory.
Вышеупомянутые пакеты NuGet можно установить с помощью команды install-package, как показано ниже.
Install-Package Microsoft.Extensions.Configuration
Install-Package Microsoft.Extensions.Configuration.Json
Install-Package Microsoft.Extensions.Configuration.CommandLine
Install-Package Microsoft.Extensions.Configuration.Binder
Install-Package Microsoft.Extensions.Configuration.EnvironmentVariables
Установка пакетов для конфигурации
После установки этих пакетов он обеспечивает необходимую функциональность для использования ConfigurationBuilder
класса. В приведенном ниже тексте я добавляю файл конфигурации json с именем appsettings.json. Я также добавляю переменные среды и командную строку в качестве источника конфигурации.
static async Task Main(string[] args)
{
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
.Build();
}
Добавление источников конфигурации и сборка ConfigurationBuilder
Теперь, когда мы создали наших поставщиков конфигурации, мы можем использовать их, как показано ниже.
var telegram = config["Telegram:Key"];
Пример файла конфигурации
{
"SendTelegram": "true",
"Telegram": {
"Key": "139ххххх:AAHfхххххххххххххххххххххххххPlBtfw",
"Chat_id": "13хххххххх18"
},
"Logging": {
"LogLevel": {
"Default": "Information",
//"Microsoft.AspNetCore": "Warning",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information",
"Microsoft.EntityFrameworkCore.Database.Command": "Information"
}
},
"AllowedHosts": "*"
}
Пример использования в файле Programm.cs
var telegram = config["Telegram:Key"];
if (bool.Parse(config["SendTelegram"]) == true)
Console.WriteLine("telegramConf = " + telegram);
Для использования конфигурации в классах приложения добавляем:
var serviceProvider = new ServiceCollection()
.AddSingleton(config)
.BuildServiceProvider();
После переходим в класс и настраиваем DI в конструкторе.
private IConfiguration config { get; }
public MailJob(IConfiguration config)
{
this.config = config;
}
И в методах используем.
string key = config["Telegram:Key"];
string chat_id = config["Telegram:Chat_id"];
Для проверки пишем
mailJob.ErrorToTelegram(new Error() { application = "FastPing", message = "Запуск приложения" });
Запускаем и получаем сообщение в группу
Решение работает, все замечания в комментариях.
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.