본문 바로가기
ASP.NET Core

.NET CLI] 사용법 - 솔루션 생성, 프로젝트 생성, 참조 추가 (2)

by Fastlane 2022. 6. 23.
728x90
반응형

프로젝트 솔루션 만들기

Visual Studio를 사용하지 않고 .NET CLI를 사용해서 2개의 projects를 포함하는 solution을 생성하고 building, cleaning, running, packaging, publishing을 해보자. 

 

가벼운 사양의 프로그램을 사용하기 위해서, Visual Studio Code + .NET CLI로 project를 개발할 수 있다. 

.NET CLI 명령어를 실행하기 위해서는 앞에 "dotnet"을 붙여준다. 

 

우선, CliDemo라는 Repository를 생성하고, 해당 폴더에 .gitignore 파일을 추가해보자. 

C:\Project>git init CliDemo
Initialized empty Git repository in C:/Project/CliDemo/.git/

C:\Project>cd CliDemo

C:\Project\CliDemo>dotnet new gitignore
"dotnet gitignore 파일" 템플릿이 성공적으로 생성되었습니다.

dotnet -h를 실행하면, 도움말을 확인할 수 있다. 

C:\Project\CliDemo>dotnet -h

dotnet 명령에는 두 가지 기능이 있다. 

  1. .NET 프로젝트 작업을 위한 명령을 제공한다.
    • 사용법: dotnet [sdk-options] [command] [command-options] [arguments]
  2. .NET 애플리케이션을 실행한다.
    • 사용법: dotnet [runtime-options] [path-to-application] [arguments]

SDK 명령에서 위에 사용한 new를 확인할 수 있다. 

SDK 명령:
  add               .NET 프로젝트에 패키지 또는 참조를 추가합니다.
  build             .NET 프로젝트를 빌드합니다.
  build-server      빌드에 의해 서버와 상호 작용이 시작되었습니다.
  clean             .NET 프로젝트의 빌드 출력을 정리합니다.
  format            프로젝트 또는 솔루션에 스타일 기본 설정을 적용합니다.
  help              명령줄 도움말을 표시합니다.
  list              .NET 프로젝트의 프로젝트 참조를 나열합니다.
  msbuild           Microsoft Build Engine(MSBuild) 명령을 실행합니다.
  new               새 .NET 프로젝트 또는 파일을 만듭니다.
  nuget             추가 NuGet 명령을 제공합니다.
  pack              NuGet 패키지를 만듭니다.
  publish           배포에 대해 .NET 프로젝트를 게시합니다.
  remove            .NET 프로젝트에서 패키지 또는 참조를 제거합니다.
  restore           .NET 프로젝트에 지정된 종속성을 복원합니다.
  run               .NET 프로젝트 출력을 빌드하고 실행합니다.
  sdk               .NET SDK 설치를 관리합니다.
  sln               Visual Studio 솔루션 파일을 수정합니다.
  store             지정된 어셈블리를 런타임 패키지 저장소에 저장합니다.
  test              .NET 프로젝트에 지정된 Test Runner를 사용하여 단위 테스트를 실행합니다.
  tool              .NET 환경을 확장하는 도구를 설치하거나 관리합니다.
  vstest            Microsoft Test Engine(VSTest) 명령을 실행합니다.
  workload          선택적 워크로드를 관리합니다.

SDK명령에 대한 자세한 정보를 보려면 'dotnet [명령] --help'를 실행한다. 

C:\Project\CliDemo>dotnet new --help
Usage: new [options]

Options:
  -h, --help                     이 명령에 대한 도움말을 표시합니다.
  -l, --list <PARTIAL_NAME>      지정된 템플릿 이름이 포함된 템플릿을 나열합니다. 이름을 지정하지 않으면 모든 템플릿을  나열합니다.
  -n, --name                     생성 중인 출력의 이름입니다. 이름을 지정하지 않으면 출력 디렉터리의 이름이 사용됩니다.
  -o, --output                   생성된 출력을 배치할 위치입니다.
  -i, --install                  소스 또는 템플릿 패키지를 설치합니다.
  -u, --uninstall                소스 또는 템플릿 패키지를 제거합니다.
  --interactive                  내부 dotnet restore 명령을 중지하고 사용자 입력 또는 작업을 기다리도록 허용합니다(예:  인증 완료).
  --add-source, --nuget-source   설치 중에 사용할 NuGet 소스를 지정합니다.
  --type                         사용 가능한 유형에 따라 템플릿을 필터링합니다. 미리 정의된 값은 "프로젝트"및 "항목"입니다.
  --dry-run                      템플릿이 생성될 경우 주어진 명령 줄이 실행되면 어떤 일이 발생하는지에 대한 요약을 표시 합니다.
  --force                        기존 파일을 변경하더라도 콘텐츠를 강제로 생성합니다.
  -lang, --language              언어에 따라 템플릿을 필터링하고 만들 템플릿의 언어를 지정합니다.
  --update-check                 현재 설치된 템플릿 패키지에서 업데이트를 확인하세요.
  --update-apply                 업데이트를 위해 현재 설치된 템플릿 패키지를 확인하고 업데이트를 설치합니다.
  --search <PARTIAL_NAME>        NuGet.org에서 템플릿을 검색합니다.
  --author <AUTHOR>              템플릿 작성자를 기준으로 템플릿을 필터링합니다. --search 또는 --list와 함께 만 적용 가 능 | -l 옵션.
  --package <PACKAGE>            NuGet 패키지 ID를 기반으로 템플릿을 필터링합니다. --search에 적용됩니다.
  --columns <COLUMNS_LIST>       --list 및 --search 출력에 표시 할 쉼표로 구분 된 열 목록입니다.
                                 지원되는 열은 언어, 태그, 작성자, 유형입니다.
  --columns-all                  --list 및 --search 출력의 모든 열을 표시합니다.
  --tag <TAG>                    태그를 기반으로 템플릿을 필터링합니다. --search 및 --list에 적용됩니다.
  --no-update-check              템플릿을 인스턴스화할 때 템플릿 패키지 업데이트 확인을 사용하지 않도록 설정합니다.

템플릿 리스트를 확인해보자. 

아래 리스트에서 gitignore을 확인할 수 있다. 

C:\Project\CliDemo>dotnet new --list
이 템플릿은 입력 내용과 일치합니다.

템플릿 이름                                   약식 이름            언어        태그
--------------------------------------------  -------------------  ----------  -------------------------------------
솔루션 파일                                   sln                              Solution
웹 구성                                       webconfig                        Config
콘솔 앱                                       console              [C#],F#,VB  Common/Console
클래스 라이브러리                             classlib             [C#],F#,VB  Common/Library
ASP.NET Core Empty                            web                  [C#],F#     Web/Empty
ASP.NET Core gRPC Service                     grpc                 [C#]        Web/gRPC
ASP.NET Core Web API                          webapi               [C#],F#     Web/WebAPI
ASP.NET Core Web App                          razor,webapp         [C#]        Web/MVC/Razor Pages
ASP.NET Core Web App (Model-View-Controller)  mvc                  [C#],F#     Web/MVC
ASP.NET Core with Angular                     angular              [C#]        Web/MVC/SPA
ASP.NET Core with React.js                    react                [C#]        Web/MVC/SPA
ASP.NET Core with React.js and Redux          reactredux           [C#]        Web/MVC/SPA
Blazor Server App                             blazorserver         [C#]        Web/Blazor
Blazor WebAssembly App                        blazorwasm           [C#]        Web/Blazor/WebAssembly/PWA
dotnet 로컬 도구 매니페스트 파일              tool-manifest                    Config
dotnet gitignore 파일                         gitignore                        Config
EditorConfig 파일                             editorconfig                     Config
global.json 파일                              globaljson                       Config
MSTest Test Project                           mstest               [C#],F#,VB  Test/MSTest
MVC ViewImports                               viewimports          [C#]        Web/ASP.NET
MVC ViewStart                                 viewstart            [C#]        Web/ASP.NET
NuGet 구성                                    nugetconfig                      Config
NUnit 3 Test Item                             nunit-test           [C#],F#,VB  Test/NUnit
NUnit 3 Test Project                          nunit                [C#],F#,VB  Test/NUnit
Protocol Buffer File                          proto                            Web/gRPC
Razor Class Library                           razorclasslib        [C#]        Web/Razor/Library/Razor Class Library
Razor Component                               razorcomponent       [C#]        Web/ASP.NET
Razor Page                                    page                 [C#]        Web/ASP.NET
Windows Forms 앱                              winforms             [C#],VB     Common/WinForms
Windows Forms 컨트롤 라이브러리               winformscontrollib   [C#],VB     Common/WinForms
Windows Forms 클래스 라이브러리               winformslib          [C#],VB     Common/WinForms
Worker Service                                worker               [C#],F#     Common/Worker/Web
WPF 애플리케이션                              wpf                  [C#],VB     Common/WPF
WPF Class library                             wpflib               [C#],VB     Common/WPF
WPF Custom Control Library                    wpfcustomcontrollib  [C#],VB     Common/WPF
WPF User Control Library                      wpfusercontrollib    [C#],VB     Common/WPF
xUnit Test Project                            xunit                [C#],F#,VB  Test/xUnit

솔루션 파일을 추가해보자. 

C:\Project\CliDemo>dotnet new sln
"솔루션 파일" 템플릿이 성공적으로 생성되었습니다.

위 경로에 CliDemo.sln 파일만 추가되었다. 

이제 DemoApp이라는 콘솔프로젝트를 만들고, 솔루션에 추가해보자. 

C:\Project\CliDemo>dotnet new console -o DemoApp
"콘솔 앱" 템플릿이 성공적으로 생성되었습니다.

생성 후 작업 처리 중...
C:\Project\CliDemo\DemoApp\DemoApp.csproj에서 'dotnet restore' 실행 중 ...
  복원할 프로젝트를 확인하는 중...
  C:\Project\CliDemo\DemoApp\DemoApp.csproj을(를) 95 ms 동안 복원했습니다.
복원에 성공했습니다.


C:\Project\CliDemo>dotnet sln add DemoApp
'DemoApp\DemoApp.csproj' 프로젝트가 솔루션에 추가되었습니다.

DemoLib 이라는 클래스 라이브러리 프로젝트를 만들고, 동일하게 솔루션에 추가해보자. 

C:\Project\CliDemo>dotnet new classlib -o DemoLib
"클래스 라이브러리" 템플릿이 성공적으로 생성되었습니다.

생성 후 작업 처리 중...
C:\Project\CliDemo\DemoLib\DemoLib.csproj에서 'dotnet restore' 실행 중 ...
  복원할 프로젝트를 확인하는 중...
  C:\Project\CliDemo\DemoLib\DemoLib.csproj을(를) 92 ms 동안 복원했습니다.
복원에 성공했습니다.


C:\Project\CliDemo>dotnet sln add DemoLib
'DemoLib\DemoLib.csproj' 프로젝트가 솔루션에 추가되었습니다.

DemoLib 프로젝트에 Dapper를 추가해보자. DemoLib 경로에서 명령어를 실행한다. 

C:\Project\CliDemo>cd DemoLib

C:\Project\CliDemo\DemoLib>dotnet add package Dapper
  복원할 프로젝트를 확인하는 중...
  Writing C:\Users\admin\AppData\Local\Temp\tmp172C.tmp
info : 'C:\Project\CliDemo\DemoLib\DemoLib.csproj' 프로젝트에 'Dapper' 패키지에 대한 PackageReference를 추가하는 중입니 다.
info :   GET https://api.nuget.org/v3/registration5-gz-semver2/dapper/index.json
info :   OK https://api.nuget.org/v3/registration5-gz-semver2/dapper/index.json 189밀리초
info : C:\Project\CliDemo\DemoLib\DemoLib.csproj의 패키지를 복원하는 중...
info : 'Dapper' 패키지는 'C:\Project\CliDemo\DemoLib\DemoLib.csproj' 프로젝트에 지정된 모든 프레임워크와 호환됩니다.
info : 'Dapper' 패키지 '2.0.123' 버전에 대한 PackageReference가 'C:\Project\CliDemo\DemoLib\DemoLib.csproj' 파일에 추가 되었습니다.
info : 자산 파일을 디스크에 쓰는 중입니다. 경로: C:\Project\CliDemo\DemoLib\obj\project.assets.json
log  : C:\Project\CliDemo\DemoLib\DemoLib.csproj을(를) 86 ms 동안 복원했습니다.

DemoLib.csproj 파일에 아래 참조가 추가되었다. 

  <ItemGroup>
    <PackageReference Include="Dapper" Version="2.0.123" />
  </ItemGroup>

이제 DemoApp 프로젝트에 DemoLib 프로젝트를 참조 추가하자. 

C:\Project\CliDemo\DemoLib>cd..

C:\Project\CliDemo>cd DemoApp

C:\Project\CliDemo\DemoApp>dotnet add reference ../DemoLib/DemoLib.csproj
프로젝트에 '..\DemoLib\DemoLib.csproj' 참조가 추가되었습니다.

DemoLib.csproj 파일에 아래 참조가 추가되었다. 

  <ItemGroup>
    <ProjectReference Include="..\DemoLib\DemoLib.csproj" />
  </ItemGroup>
728x90
반응형

댓글