[C#/ASP.NET MVC/.NETCORE] CommandLineConfigurationExtensions 클래스 : AddCommandLine 확장 메소드에서 스위치 매핑을 사용해 명령줄 구성 공급자 등록하기
C#/ASP.NET MVC 2020. 10. 21. 23:16728x90
반응형
728x170
▶ Program.cs
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using System.Collections.Generic;
namespace TestProject
{
/// <summary>
/// 프로그램
/// </summary>
public class Program
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Public
#region 프로그램 시작하기 - Main(argumentArray)
/// <summary>
/// 프로그램 시작하기
/// </summary>
/// <param name="argumentArray">인자 배열</param>
public static void Main(string[] argumentArray)
{
CreateHostBuilder(argumentArray).Build().Run();
}
#endregion
#region 호스트 빌더 생성하기 - CreateHostBuilder(argumentArray)
/// <summary>
/// 호스트 빌더 생성하기
/// </summary>
/// <param name="argumentArray">인자 배열</param>
/// <returns>호스트 빌더</returns>
public static IHostBuilder CreateHostBuilder(string[] argumentArray)
{
Dictionary<string, string> switchMappingDictionary = new Dictionary<string, string>()
{
{ "-k1" , "key1" },
{ "-k2" , "key2" },
{ "--alt3", "key3" },
{ "--alt4", "key4" },
{ "--alt5", "key5" },
{ "--alt6", "key6" },
};
return Host.CreateDefaultBuilder(argumentArray)
.ConfigureAppConfiguration
(
(context, configuration) =>
{
configuration.AddCommandLine(argumentArray, switchMappingDictionary);
}
)
.ConfigureWebHostDefaults
(
builder =>
{
builder.UseStartup<Startup>();
}
);
}
#endregion
}
}
728x90
▶ appsettings.json
{
"Logging" :
{
"LogLevel" :
{
"Default" : "Information",
"Microsoft" : "Warning",
"Microsoft.Hosting.Lifetime" : "Information"
}
},
"AllowedHosts" : "*"
}
300x250
▶ Controllers/TestController.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using System.Text;
namespace TestProject.Controllers
{
/// <summary>
/// 테스트 컨트롤러
/// </summary>
public class TestController : Controller
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 구성
/// </summary>
private IConfiguration configuration;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - TestController(configuration)
/// <summary>
/// 생성자
/// </summary>
/// <param name="configuration">구성</param>
public TestController(IConfiguration configuration)
{
this.configuration = configuration;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 인덱스 페이지 처리하기 - Index()
/// <summary>
/// 인덱스 페이지 처리하기
/// </summary>
/// <returns>액션 결과</returns>
public IActionResult Index()
{
string key1 = this.configuration["key1"];
string key2 = this.configuration["key2"];
string key3 = this.configuration["key3"];
string key4 = this.configuration["key4"];
string key5 = this.configuration["key5"];
string key6 = this.configuration["key6"];
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine($"Key 1 : {key1}");
stringBuilder.AppendLine($"Key 2 : {key2}");
stringBuilder.AppendLine($"Key 3 : {key3}");
stringBuilder.AppendLine($"Key 4 : {key4}");
stringBuilder.AppendLine($"Key 5 : {key5}");
stringBuilder.AppendLine($"Key 6 : {key6}");
return Content(stringBuilder.ToString());
}
#endregion
}
}
※ 테스트 방법
1. [명령 프롬프트]를 실행한다.
2. [명령 프롬프트]에서 실행할 .NET Core 프로젝트 디렉토리로 이동한다.
3. [명령 프롬프트]에서 아래 명령을 실행한다.
dotnet run -k1 value1 -k2 value2 --alt3=value3 /alt4=value4 --alt5 value5 /alt6 value6
728x90
반응형
그리드형(광고전용)
댓글을 달아 주세요