.NET Core 2.1 - 확장 도구(Tools) 관리
.NET Core 2.1부터,
Announcing .NET Core 2.1
; https://blogs.msdn.microsoft.com/dotnet/2018/05/30/announcing-net-core-2-1/
사용자 정의 Tool을 관리할 수 있는 기능이 생겼습니다. .NET Full Framework과 비교하자면 "C:\Windows\Microsoft.NET\Framework\v4.0.30319" 등의 폴더에 사용자 프로그램을 넣어두는 것과 유사하겠습니다.
사용법은, 역시 NuGet으로부터 배포된 도구를 설치할 수 있는데 가령 "dotnetsay"라는 도구인 경우 다음과 같은 명령어로 설치할 수 있습니다.
C:\>dotnet tool install -g dotnetsay
-g 옵션인 경우 물리적인 설치 경로는 %USERPROFILE%을 기준으로 정해집니다.
%USERPROFILE%\.dotnet\tools\.store\dotnetsay
(* 윈도우의 경우 %USERPROFILE%\.dotnet\tools 폴더에 dotnetsay.exe 파일도 생성됩니다.)
원한다면 -g 옵션 대신 --tool-path 옵션과 함께 경로를 전달해 원하는 로컬 폴더를 지정할 수 있습니다.
C:\>dotnet tool install --tool-path d:\tool\.dotnet dotnetsay
You can invoke the tool using the following command: dotnetsay
Tool 'dotnetsay' (version '2.1.4') was successfully installed.
(* 윈도우의 경우 지정된 d:\tools\.dotnet 폴더에 dotnetsay.exe 파일도 생성됩니다.)
미리 설치된 도구 목록은 list 옵션으로 알 수 있습니다.
C:\>dotnet tool list --global
Package Id Version Commands
--------------------------------------
dotnetsay 2.1.4 dotnetsay
C:\>dotnet tool list --tool-path d:\tool\.dotnet
Package Id Version Commands
--------------------------------------
dotnetsay 2.1.4 dotnetsay
참고로 -g 옵션으로 "dotnet tool install" 명령을 해당 시스템에서 처음 실행한 경우에는 다음의 2가지 작업을 하게 됩니다.
1. %USERPROFILE%\.dotnet\tools\ 폴더 생성
2. tools 폴더를 PATH 환경 변수에 등록
이 때문에 "최초 설치" 후 곧바로 dotnetsay.exe를 실행하면 찾지 못하는 경우가 있는데 그럴 때는 명령행 윈도우 창을 새롭게 다시 띄워주면 됩니다.
삭제는 다음의 uninstall 명령으로 할 수 있습니다.
C:> dotnet tool uninstall -g dotnetsay
물론 여러분들도 사용자 정의 도구를 만들어 NuGet에 배포할 수 있습니다. 예제 코드는 github에 공개된 dotnetsay 예제를 참고합니다.
dotnetsay .NET Core Global Tools Sample
; https://github.com/dotnet/core/blob/master/samples/dotnetsay/README.md
더 많은 도구들은 다음의 링크에서 확인할 수 있습니다.
dotnet-tools
; https://github.com/natemcmaster/dotnet-tools/blob/master/README.md
이로써 .NET Core의 도구는 2가지 종류가 되었다고 합니다.
- DotNet tools (aka global tools)
- DotNetCliToolRef tools (aka project-only tools)
또한 이전 2.0 버전까지는 별도 패키지로 제공되던 아래의 도구들이,
- dotnet-ef
- dotnet-sql-cache
- dotnet-user-secrets
- dotnet-watch
2.1부터는 기본 내장되었다고 하니 더 이상 따로 설치할 필요가 없게 되었습니다.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]