.NET 콘솔 애플리케이션에서 명령줄 매개변수를 사용하여 구성

8259 단어
종속성 주입을 사용하면 호스트 구성에 대해 한 번 이상 이해하면 .NET에서 호스팅되는 애플리케이션의 리소스를 훨씬 더 간단하게 관리할 수 있습니다.

To see the example, scroll down to 'The Example'



명령줄 매개변수로 구성하는 이유는 무엇입니까?



오래 전에 GUI 기반 운영 체제 이전에 CLI 기반 운영 체제가 있었고 많은 프로그램이 스위치, 옵션, 인수 또는 플래그라고도 하는 많은 매개 변수가 있는 명령에 의존했습니다. 내가 가장 좋아하는 것 중 하나는 PKZIP이었습니다. 명령줄 옵션의 양은 Git과 마찬가지로 압도적이었습니다. 그러나 그 당시에는 즉각적인 도움을 받을 수 있는 Stack Overflow와 같은 리소스가 있는 웹이 없었습니다.

.NET 애플리케이션의 경우 일반적으로 설정이 포함된 일종의 JSON 파일을 사용하지만 Git과 같은 애플리케이션을 매우 강력하게 만드는 명령줄 매개변수를 기반으로 다양한 작업을 수행할 수 있는 애플리케이션을 유연하게 만들고 싶을 수 있습니다. 많은 통합 개발 환경과 같은 다른 응용 프로그램에서 사용되는 적응형.

누구에게나 이것이 필요한 이유는 무엇입니까?



제 경우에는 복잡한 알고리즘이 필요하지 않은 임시 임시 해결책을 작성하는 것이 었습니다. 예약된 작업처럼 실행되어 서비스로 실행되기를 원했지만 호스팅 서버에 서비스로 게시하고 싶지 않았습니다. 무엇보다도 특정 값이 코드, 절차 또는 구성에 고정되지 않기를 원했습니다. 이러한 값 중 일부는 API 키이므로 해당 값을 DOS 배치 파일에 넣거나 Windows Server의 예약된 작업에 넣을 수 있습니다.



우리의 예는 .NET 콘솔 응용 프로그램이므로 터미널에서 호출되며 매개 변수는 이름-값 쌍 없이 위치 지정되며 선택 사항은 없습니다. 우리는 이것을 이렇게 부릅니다.
dotnet DiClParameterConfig.dll first second third fourth fifth

If you're just going to run this in the debugger in VSCode, the repo included at the bottom of this post has parameters in the launch.json file. If you debug using Visual Studio, then you'll want to add these parameters to the debugging configuration of your project.



이 작업을 수행하는 것은 구성 구성입니다. 내 말은 먼저 program.cs 파일에서 .NET 호스트를 구성하여 명령줄 인수를 사용하여 기본 빌더를 만든 다음 응용 프로그램 구성을 키-값 쌍을 기반으로 하는 메모리 내 컬렉션으로 구성하거나 사전.

using IHost host = Host
    .CreateDefaultBuilder(args)
    .ConfigureAppConfiguration((_, configuration) =>
        configuration.AddInMemoryCollection(
            new Dictionary<string, string>
            {
                ["First"] = args[0],
                ["Second"] = args[1],
                ["Third"] = args[2],
                ["Fourth"] = args[3],
                ["Fifth"] = args[4]
            }))
        .ConfigureServices((_, services) =>
            services
                .AddScoped<TestClass>()
    )
    .Build();

이 작업을 완료하면 이 구성을 생성자에 대한 매개 변수로 전달할 수 있습니다.

using System.Text;
using Microsoft.Extensions.Configuration;

namespace DiClParameterConfig;

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 configuration)
    {
        First = configuration["First"];
        Second = configuration["Second"];
        Third = configuration["Third"];
        Fourth = configuration["Fourth"];
        Fifth = configuration["Fifth"];
    }

    public void Run()
    {
      ...
    }
}

이제 이 예제는 매개 변수 목록의 유효성을 검사하거나 유연성을 제공하지 않지만 이는 C#일 뿐이며 이 데모의 범위를 벗어납니다. 여기서는 구식 DOS 명령줄 매개변수를 종속성 주입을 사용하여 호스트에 전달되는 최신 구성으로 전환하고 있습니다.

주목해야 할 중요한 점은 호스트 구성에서 매개변수를 사전의 구성원에 매핑하지만 클래스에서는 IConfiguration 인터페이스를 사용하는 다른 방식과 다르지 않게 구성된 값을 추출한다는 것입니다.

여기에서 작업 예를 참조하십시오.




알페타159 / DICommandLine구성


.NET 콘솔 애플리케이션에 대한 명령줄 매개변수의 구성 예





.NET 콘솔 애플리케이션의 명령줄 매개변수


종속성 주입을 사용하면 호스트 구성에 대해 한 번 이상 이해하면 .NET에서 호스팅되는 애플리케이션의 리소스를 훨씬 더 간단하게 관리할 수 있습니다.

To see the example, scroll down to 'The Example'


명령줄 매개변수로 구성하는 이유는 무엇입니까?


오래 전에 GUI 기반 운영 체제 이전에 CLI 기반 운영 체제가 있었고 많은 프로그램이 스위치, 옵션, 인수 또는 플래그라고도 하는 많은 매개 변수가 있는 명령에 의존했습니다. 내가 가장 좋아하는 것 중 하나는 PKZIP이었습니다. 명령줄 옵션의 양은 Git과 마찬가지로 압도적이었습니다. 그러나 즉각적인 도움을 받을 수 있는 Stack Overflow와 같은 리소스가 포함된 웹은 없었습니다.
.NET 애플리케이션의 경우 일반적으로 설정이 포함된 일종의 JSON 파일을 사용하지만 명령줄 매개변수를 기반으로 다양한 작업을 수행할 수 있는 애플리케이션을 유연하게 만들고 싶을 수 있습니다.

View on GitHub

좋은 웹페이지 즐겨찾기