TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.76K subscribers
Post #1580 1.59K
День 1275. #ЗаметкиНаПолях
Настройка Через Параметры Командной Строки в Консольных Приложениях
Внедрение зависимостей значительно упрощает управление ресурсами в приложениях .NET, по крайней мере, если вы разберётесь с настройкой хоста.

Для приложений .NET мы обычно используем файл JSON с настройками, но можно сделать приложение более гибким, с помощью параметров командной строки. Вариантом использования может быть временное решение, которое требуется запускать как запланированное задание.

В примере ниже консольное приложение .NET вызывается в терминале, а параметры являются позиционными и все обязательные. Приложение вызывается так:
dotnet MyApp.dll first second third fourth fifth

Теперь проведём настройку хоста в файле program.cs, сначала создавая построитель по умолчанию с аргументами командной строки, а затем настраиваем конфигурацию приложения как коллекцию в памяти, основанную на парах ключ-значение из словаря:
using IHost host = Host
.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((_, conf) =>
conf.AddInMemoryCollection(
new Dictionary<string, string> {
["First"] = args[0],
["Second"] = args[1],
["Third"] = args[2],
["Fourth"] = args[3],
["Fifth"] = args[4]
}))
.ConfigureServices((_, srvc) =>
srvc.AddScoped<TestClass>())
.Build();

Теперь мы можем передать эту конфигурацию как параметр в любой конструктор:
using System.Text;
using Microsoft.Extensions.Configuration;

namespace MyApp;

public class TestClass
{
private readonly string First;
private readonly string Second;
private readonly string Third;
private readonly string Fourth;
private readonly string Fifth;

public TestClass(IConfiguration conf)
{
First = conf["First"];
Second = conf["Second"];
Third = conf["Third"];
Fourth = conf["Fourth"];
Fifth = conf["Fifth"];
}

public void Run()
{
//…
}
}

И далее вызвать класс как сервис:
var test = host.Services.GetService<TestClass>();
test.Run();

Этот пример не проверяет список параметров и не предлагает какой-либо гибкости. Здесь мы просто превращаем параметры командной строки в удобную конфигурацию, передаваемую через внедрение зависимостей.

Важно отметить, что в нашей конфигурации хоста мы сопоставляем параметры с элементами словаря, а в классе извлекаем настроенные значения, как и в любом другом случае использования интерфейса IConfiguration.

Полный код примера здесь

Источник: https://dev.to/alfetta159/configuration-using-command-line-parameters-in-net-console-applications-21e4
  • 👍 1
More from @netdeveloperdiary
  1. Oct 14, 2026Post #3373
  2. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 1. Почему существу…
  3. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
  4. Oct 11, 2026День 2811. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  5. Oct 10, 2026День 2810. #ЧтоНовенького #VSCode Более Быстрый и Лёгкий C# Dev Kit Мы, разработчики, люби…
  6. Oct 9, 2026День 2809. #Карьера 5 Навыков, Которые Помогут Быстрее Стать Сеньором. Окончание Начало 3.…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →