프로젝트 솔루션 만들기
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 명령에는 두 가지 기능이 있다.
- .NET 프로젝트 작업을 위한 명령을 제공한다.
- 사용법: dotnet [sdk-options] [command] [command-options] [arguments]
- .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>
'ASP.NET Core' 카테고리의 다른 글
ASP.NET MVC vs ASP.NET Core] startup, host 차이점 (0) | 2023.02.07 |
---|---|
.NET CLI] 사용법 - 빌드, 실행, 게시(self-contained, framework-dependent) (3) (0) | 2022.06.24 |
.NET CLI] 사용법 - 설명, SDK 설치확인, SDK 다운로드 (1) (0) | 2022.06.23 |
.NET] .NET Framework, .NET Core, .NET Standard 정리 (0) | 2022.06.23 |
.NET 6] user-secrets(secrets.json) 사용하여 ConnectionStrings 계정 관리하기 (0) | 2022.06.16 |
댓글