Spis treści
Jeśli szukasz konkretnych przykładów lub bardziej zaawansowanych rozwiązań to zapraszam do tego repozytorium Microsoftu: https://github.com/dotnet/dotnet-template-samples.
Dwa sposoby tworzenia szablonów
Wyróżniam dwa sposoby na tworzenie szablonów:
-
prosty - gdzie wrzucamy do katalogu pliki, których chcemy używać, a polecenie dotnet new po prostu przekopiuje pliki w nowe miejsce i ewentualnie zmieni ich zawartosć,
-
Nugetowy - gdzie możemy utworzyć własną paczkę z szablonami i swobodnie ja dystrybuować w postaci nuget’a. Do tego oferuje ona możliwość załadowania wielu szablonów w jedną paczkę.
Prosty
Aby utworzyć prosty szablon należy:
-
Utworzyć katalog, w którym znajdą się rzeczy, które trafią do szablonu – nazwijmy go
simplest
– będzie to nasz bieżący katalog roboczy. -
Wewnątrz katalogu roboczego utwórz następny o nazwie
.template.config
, a wewnątrz katalogu.template.config
utwórz plik o nazwietemplate.json
-
Do pliku
template.json
wklej zawartość: -
Do katalogu roboczego dodaj dowolny plik, na przykład plik projektu
PersonComponent.Core.csproj
oraz plik klasy C# o nazwieInstaller.cs
o treści: -
Teraz przejdź w konsoli do katalogu nadrzędnego dla katalogu roboczego i wywołaj tam polecenie
dotnet new -i .\simplest\
. Powinieneś na końcu zobaczyć wypis: -
Teraz największa magia. Utwórz gdzieś indziej nowy katalog o nazwie
MójProjekt
i przejdź do niego w konsoli, gdzie wywołaj komendędotnet new ztr-core
. -
Wadą tego rozwiązania jest to, że cały czas polega ono na katalogu źródłowym szablonu. Dodaj do katalogu
simplest
nowy plikdumb.txt
nawet bez zawartości, a zobaczysz, że przy ponownym wywołaniu metodydotnet new ztr-core
ten również zostanie przekopiowany. -
Teraz usuń lub zmień nazwę katalogu źródłowego (
simplest
) i spróbuj ponownie utworzyć nowy projekt (dotnet new ztr-core
) -
Aby odinstalować szablon użyj polecenia
dotnet new -u «pełna ścieżka do szablonu»
Nugetowy
Nugetowy szablon ma dwie zasadnicze zalety:
-
Może być spakowany do postaci nuget’a,
-
Może być paczką szablonów, czyli zawierać w sobie wiele pojedynczych, całkowicie różnych szablonów dostarczanych w jednym pliku.
-
Aby utworzyć taką paczkę, utwórz drzewo katalogów z plikami jak poniżej:
-
Uzupełnij plik projektu
ZtrDotnetTemplates.csproj
: -
Uzupełnij plik konfiguracyjny szablonu konsolowego
templates/console/.template.config/template.json
-
Uzupełnij pliki
templates/core/.template.config/template.json
,templates/core/Installer.cs
oraztemplates/core/PersonComponent.Core.csproj
-
Zbuduj i zainstaluj nugeta!
-
Używaj!
-
Podsumowanie
-
Myślę, że własny szablon projektu może być bardzo przydatnym narzędziem, nie tylko w przypadku projektów .Netowych, ale także w innych rozwiązaniach, niezwiązanych z żadnym językiem programowania.
-
Pamiętaj, że ten artykuł to dopiero zalążek, a cały silnik szablonów ma jeszcze wiele możliwości, które możesz odkryć w linkach poniżej – znajdują się tam, między innymi, adresy repozytoriów związane z tym projektem.
-
Zwróć uwagę, że całość będzie jeszcze przyjemniejsza, gdy własne szablony połączysz CI/CD (np. na Githubie) co da Ci dostęp do twoich ulubionych wzorców niemalże wszędzie!
Odnośniki
-
Github z przykładami https://github.com/dotnet/dotnet-template-samples - dobre miejsce do startu.
-
Podstawowy link, który pokrótce wyjaśnia wszystko: https://docs.microsoft.com/en-us/dotnet/core/tools/custom-templates, nie jest on najczytelniejszy, ale przy drugim/trzecim podejściu można zrozumieć wszystko.
-
Seria artykułów od MS. Zawiera tę samą treść co powyżej tylko bardziej uszczegółowioną: https://docs.microsoft.com/en-us/dotnet/core/tutorials/cli-templates-create-item-template.
-
Github zawierający repo silnika szablonów: https://github.com/dotnet/templating - miejsce, gdzie możesz znaleźć dużo szczegółowych informacji.