Tutorial: Membuat templat item
Dengan .NET, Anda dapat membuat dan menyebarkan templat yang menghasilkan proyek, file, dan sumber daya. Tutorial ini adalah bagian dari seri yang mengajarkan Anda cara membuat, menginstal, dan menghapus instalasi templat untuk digunakan dengan dotnet new
perintah .
Anda dapat melihat templat yang telah selesai di repositori GitHub Sampel .NET.
Tip
Templat item tidak ditampilkan dalam dialog Tambahkan>Item Baru di Visual Studio.
Di bagian seri ini, Anda akan mempelajari cara:
- Buat kelas untuk templat item.
- Buat folder dan file konfigurasi templat.
- Instal templat dari jalur file.
- Menguji templat item.
- Hapus instalan templat item.
Prasyarat
.NET SDK 7.0.100 atau versi yang lebih baru.
Artikel referensi menjelaskan dasar-dasar tentang templat dan bagaimana templat disatukan. Beberapa informasi ini dinyatakan kembali di sini.
Buka terminal dan navigasi ke folder tempat Anda akan menyimpan dan menguji templat.
Penting
Artikel ini ditulis untuk .NET 7. Namun, ini juga berlaku untuk .NET 6 dan versi sebelumnya, dengan satu perbedaan: dotnet new
Sintaksnya berbeda. list
Sub perintah , search
, install
, dan uninstall
harus , --list
--search
, --install
, dan --uninstall
opsi, masing-masing.
Misalnya, dotnet new install
perintah di .NET 7 menjadi dotnet new --install
di .NET 6. dotnet new --help
Gunakan perintah untuk melihat daftar semua opsi dan sub-perintah.
Membuat folder yang diperlukan
Seri ini menggunakan "folder kerja" tempat sumber templat Anda berada dan "folder pengujian" yang digunakan untuk menguji templat Anda. Folder kerja dan folder pengujian harus berada di bawah folder induk yang sama.
Pertama, buat folder induk, nama tidak masalah. Kemudian, buat dua subfolder bernama bekerja dan uji. Di dalam folder kerja, buat subfolder bernama konten.
Struktur folder akan terlihat seperti berikut ini.
parent_folder
├───test
└───working
└───content
Membuat templat item
Templat item adalah jenis templat tertentu yang berisi satu atau beberapa file. Jenis templat ini berguna ketika Anda sudah memiliki proyek dan Anda ingin membuat file lain, seperti file konfigurasi atau file kode. Dalam contoh ini, Anda akan membuat kelas yang menambahkan metode ekstensi ke jenis string.
Di terminal Anda, navigasikan ke folder working\content dan buat subfolder baru bernama extensions.
working
└───content
└───extensions
Navigasi ke folder ekstensi dan buat file baru bernama StringExtensions.cs. Buka file di editor teks. Kelas ini akan menyediakan metode ekstensi bernama Reverse
yang membalikkan konten string. Tempelkan kode berikut dan simpan file:
namespace System;
public static class StringExtensions
{
public static string Reverse(this string value)
{
char[] tempArray = value.ToCharArray();
Array.Reverse(tempArray);
return new string(tempArray);
}
}
Sekarang setelah konten templat selesai, langkah selanjutnya adalah membuat konfigurasi templat.
Membuat konfigurasi templat
Di bagian tutorial ini, folder templat Anda terletak di working\content\extensions.
Templat dikenali oleh .NET karena memiliki folder khusus dan file konfigurasi yang ada di akar folder templat Anda.
Pertama, buat subfolder baru bernama .template.config, dan masukkan. Kemudian, buat file baru bernama template.json. Struktur folder Anda akan terlihat seperti ini:
working
└───content
└───extensions
└───.template.config
template.json
Buka template.json dengan editor teks favorit Anda dan tempelkan kode JSON berikut dan simpan.
{
"$schema": "http://json.schemastore.org/template",
"author": "Me",
"classifications": [ "Common", "Code" ],
"identity": "ExampleTemplate.StringExtensions",
"name": "Example templates: string extensions",
"shortName": "stringext",
"tags": {
"language": "C#",
"type": "item"
},
"symbols": {
"ClassName":{
"type": "parameter",
"description": "The name of the code file and class.",
"datatype": "text",
"replaces": "StringExtensions",
"fileRename": "StringExtensions",
"defaultValue": "StringExtensions"
}
}
}
File konfigurasi ini berisi semua pengaturan untuk templat Anda. Anda dapat melihat pengaturan dasar, seperti name
dan shortName
, tetapi ada juga tags/type
nilai yang diatur ke item
. Ini mengategorikan templat Anda sebagai templat "item". Tidak ada batasan pada jenis templat yang Anda buat. Nilai item
dan project
adalah nama umum yang direkomendasikan .NET sehingga pengguna dapat dengan mudah memfilter jenis templat yang mereka cari.
Item classifications
mewakili kolom tag yang Anda lihat saat menjalankan dotnet new
dan mendapatkan daftar templat. Pengguna juga dapat mencari berdasarkan tag klasifikasi. Jangan membingungkan tags
properti dalam file template.json dengan classifications
daftar tag. Mereka adalah dua konsep berbeda yang sayangnya dinamai sama. Skema lengkap untuk file template.json ditemukan di Penyimpanan Skema JSON dan dijelaskan di Referensi untuk template.json. Untuk informasi selengkapnya tentang file template.json, lihat wiki templating dotnet.
Bagian symbols
dari objek JSON ini digunakan untuk menentukan parameter yang dapat digunakan dalam templat. Dalam hal ini, ada satu parameter yang ditentukan, ClassName
. Parameter yang ditentukan berisi pengaturan berikut:
type
- Ini adalah pengaturan wajib dan harus diatur keparameter
.description
- Deskripsi parameter, yang dicetak dalam bantuan templat.datatype
- Jenis data nilai parameter saat parameter digunakan.replaces
- Menentukan nilai teks yang harus diganti di semua file templat dengan nilai parameter.fileRename
- Miripreplaces
dengan , ini menentukan nilai teks yang diganti dalam nama semua file templat dengan nilai parameter.defaultValue
- Nilai default parameter ini ketika parameter tidak ditentukan oleh pengguna.
Ketika templat digunakan, pengguna dapat memberikan nilai untuk ClassName
parameter , dan nilai ini menggantikan semua kemunculan StringExtensions
. Jika nilai tidak disediakan, nilai defaultValue
akan digunakan. Untuk templat ini, ada dua kemunculan StringExtensions
: file StringExtensions.cs dan kelas StringExtensions. defaultValue
Karena parameternya adalah StringExtensions
, nama file dan nama kelas tetap tidak berubah jika parameter tidak ditentukan saat menggunakan templat. Ketika nilai ditentukan, misalnya dotnet new stringext -ClassName MyExts
, file diganti namanya menjadi MyExts.cs dan kelas diganti namanya menjadi MyExts.
Untuk melihat parameter apa yang tersedia untuk templat, gunakan -?
parameter dengan nama templat:
dotnet new stringext -?
Yang menghasilkan output berikut:
Example templates: string extensions (C#)
Author: Me
Usage:
dotnet new stringext [options] [template options]
Options:
-n, --name <name> The name for the output being created. If no name is specified, the name of the output directory is used.
-o, --output <output> Location to place the generated output.
--dry-run Displays a summary of what would happen if the given command line were run if it would result in a template creation.
--force Forces content to be generated even if it would change existing files.
--no-update-check Disables checking for the template package updates when instantiating a template.
--project <project> The project that should be used for context evaluation.
-lang, --language <C#> Specifies the template language to instantiate.
--type <item> Specifies the template type to instantiate.
Template options:
-C, --ClassName <ClassName> The name of the code file and class.
Type: text
Default: StringExtensions
Sekarang setelah Anda memiliki file .template.config/template.json yang valid, templat Anda siap untuk diinstal. Di terminal Anda, navigasikan ke folder ekstensi dan jalankan perintah berikut untuk menginstal templat yang terletak di folder saat ini:
- Pada Windows:
dotnet new install .\
- Di Linux atau macOS:
dotnet new install ./
Perintah ini menghasilkan daftar templat yang diinstal, yang harus menyertakan templat Anda.
The following template packages will be installed:
<root path>\working\content\extensions
Success: <root path>\working\content\extensions installed the following templates:
Templates Short Name Language Tags
-------------------------------------------- ------------------- ------------ ----------------------
Example templates: string extensions stringext [C#] Common/Code
Menguji templat item
Sekarang setelah Anda menginstal templat item, uji templat tersebut.
Navigasikan ke folder pengujian .
Buat aplikasi konsol baru dengan
dotnet new console
, yang menghasilkan proyek kerja yang dapat Anda uji dengan mudah dengandotnet run
perintah .dotnet new console
Anda mendapatkan output yang mirip dengan yang berikut ini.
The template "Console Application" was created successfully. Processing post-creation actions... Running 'dotnet restore' on C:\test\test.csproj... Restore completed in 54.82 ms for C:\test\test.csproj. Restore succeeded.
Jalankan proyek menggunakan perintah berikut.
dotnet run
Anda mendapatkan output berikut.
Hello, World!
Jalankan
dotnet new stringext
untuk menghasilkan file StringExtensions.cs dari templat.dotnet new stringext
Anda mendapatkan output berikut.
The template "Example templates: string extensions" was created successfully.
Ubah kode di Program.cs untuk membalikkan
"Hello, World!"
string dengan metode ekstensi yang disediakan oleh templat.Console.WriteLine("Hello, World!".Reverse());
Jalankan program lagi dan lihat bahwa hasilnya dibalik.
dotnet run
Anda mendapatkan output berikut.
!dlroW ,olleH
Selamat! Anda membuat dan menyebarkan templat item dengan .NET. Sebagai persiapan untuk bagian berikutnya dari seri tutorial ini, hapus instalan templat yang Anda buat. Pastikan untuk menghapus semua file dan folder di folder pengujian juga. Ini membuat Anda kembali ke status bersih siap untuk bagian berikutnya dari seri tutorial ini.
Menghapus instalan templat
Di terminal Anda, navigasikan ke folder ekstensi dan jalankan perintah berikut untuk menghapus instalasi templat yang terletak di folder saat ini:
- Pada Windows:
dotnet new uninstall .\
- Di Linux atau macOS:
dotnet new uninstall ./
Perintah ini menghasilkan daftar templat yang dihapus instalasinya, yang harus menyertakan templat Anda.
Success: <root path>\working\content\extensions was uninstalled.
Kapan saja, Anda dapat menggunakan dotnet new uninstall
untuk melihat daftar paket templat yang diinstal, termasuk untuk setiap paket templat perintah untuk menghapus instalannya.
Langkah berikutnya
Dalam tutorial ini, Anda membuat templat item. Untuk mempelajari cara membuat templat proyek, lanjutkan seri tutorial ini.