Luo koodi automaattisesti Visual Studion ja Text Template Transformation Toolkitin (T4) avulla
Toimintaympäristö
- Visuaalinen studio
-
- Visuaalinen studio 2022
- .VERKKO
-
- .NET 8.0
- Windows
-
- Windows 11
Edellytykset
- Visuaalinen studio
-
- Se toimii jopa hieman vanhemman version kanssa
- .VERKKO
-
- Se toimii jopa hieman vanhemman version kanssa
Alun perin
Normaalisti, kun luot koodia, luulet, että luot koodin kirjoittamalla merkkejä manuaalisesti, mutta jos haluat luoda koodin, joka perustuu koodiin tai tietoihin, jotka on luotava tietyllä lailla, on kätevää pystyä luomaan se automaattisesti. Tässä osassa kuvataan, miten T4 (Text Template Transformation Toolkit) -työkalupaketin avulla luodaan koodi automaattisesti.
Koska T4 on komentosarjamuoto, koodin luominen Visual Studiossa on erittäin helppoa heti T4-tiedoston luomisen jälkeen. On kirjoitettu, että se luo automaattisesti koodia, mutta luotu on vain tekstiä, joten ohjelmien lisäksi on mahdollista luoda mitä tahansa tekstimuodossa, kuten XML ja JSON.
Tämän vinkin päätarkoitus on selittää vaiheet koodin luomiseksi automaattisesti T4: ssä, joten en mene T4: n yksityiskohtiin perusteellisesti. Jos olet koskaan kirjoittanut ohjelman C #: lla, ymmärrät sen heti. Jos haluat tietää enemmän T4: stä, tarkista virallinen verkkosivusto ja muut sivustot.
edellytys
Tässä vihjeessä oletetaan seuraavaa:
- Windowsiin asennettu Visual Studio
- C#:n ymmärtäminen
T4:ää voidaan käyttää useimmissa projekteissa muutamaa lukuun ottamatta, joten voit periaatteessa vapaasti valita työmääräsi asennuksen aikana.
Luo projekti
Kuten aiemmin mainittiin, T4: ää voidaan käyttää useimmissa projekteissa, lukuun ottamatta muutamaa, joten ei ole väliä minkä tyyppisen projektin luot. Tässä tapauksessa luomme projektin konsolisovellukselle.
T4-tiedoston (.tt) luominen
Napsauta projektitiedostoa tai kansiota hiiren kakkospainikkeella lisätäksesi uuden kohteen.
Napsauta Näytä kaikki mallit -painiketta.
Valitse vasemmalla olevasta puusta "Yleiset" ja keskellä olevasta luettelosta "Tekstimallit". Tiedostonimi on mielivaltainen.
Heti tiedoston luomisen jälkeen saatat nähdä alla olevan kaltaisen valintaikkunan. Tämä näkyy, kun T4-tiedosto luodaan automaattisesti. T4-tiedostot luodaan automaattisesti aina, kun tiedosto tallennetaan tai sitä tarkastellaan. Jos haluat suorittaa automaattisen generointiprosessin sellaisenaan, napsauta "OK" -painiketta. Jos et halua valintaikkunan tulevan näkyviin joka kerta, valitse "Älä näytä tätä viestiä uudelleen". Huomaa, että jos laiton prosessi kuvataan T4-tiedostossa valintaikkunassa ilmoitetulla tavalla, se suoritetaan vastaavasti.
Kun olet lisännyt tiedoston, näet, että .tt-tiedosto on lisätty Solution Exploreriin.
Tiedoston sisältö on seuraava.
Jos purat .tt-tiedoston Solution Explorerissa, näet samannimisen tekstitiedoston. Tämä on automaattisesti luotu tiedosto. Koska emme ole vielä kirjoittaneet mitään, tiedoston sisältö on tyhjä.
Tee automaattisesti luodusta tiedostosta .cs tiedosto
Jos käytät T4:ää, haluat todennäköisesti käyttää .cs-laajennusta oletus.txt sijaan, koska ohjelmasi koodi luodaan automaattisesti.
Avaa siinä tapauksessa .tt-tiedosto ja output
extension
.cs
tallenna se .
Automaattisesti luodulla tiedostolla pitäisi nyt olla .cs-laajennus. Itse tiedostonimi on sama kuin .tt-tiedosto, joten jos haluat muuttaa sitä, muuta .tt-tiedoston nimi.
Kirjoita toistaiseksi jotain ja tulosta se automaattisesti luotuun tiedostoon
T4: ssä kirjoittamasi sisältö tulostetaan periaatteessa sellaisenaan.
<# ... #>
on T4-prosessi, ja loppu on todellinen tulosteksti.
Laitetaan se esimerkiksi .tt-tiedostoon seuraavasti.
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs" #>
public static class Sample
{
public static void Hello()
{
Console.WriteLine("Hello T4!!");
}
}
Kun tallennat tiedoston, automaattisesti luodun tiedoston pitäisi tulostua täsmälleen sellaisena kuin kirjoitit sen.
Lähtö on koodi, joten tietysti sitä voidaan kutsua myös Program.cs.
Yritä luoda koodi automaattisesti
Kuten edellä mainittiin, olen vahvistanut, että kirjoittamani tulostetaan sellaisenaan, mutta tämä ei eroa siitä, mitä kirjoitin normaalisti. Käytetään nyt itse asiassa T4-komentosarjaa koodin automaattiseen luomiseen. On olemassa laaja valikoima tapoja tehdä se, joten anna vain lyhyt selitys täällä ja tee se sitten uudelleen haluamallasi tavalla.
Tällä kertaa luodaan esimerkiksi menetelmä, joka lisää merkkijonoon kunkin tyyppisen jäsennysmenetelmän ja palauttaa ParseXXXX
määritetyn oletusarvon, jos sitä ei voi muuntaa.
Tämä on vain esimerkki luomisesta, joten olkaa hyvä ja lisätkää se, jos tunnette, että jokin osa puuttuu.
Jos ymmärrät C #: n selittämättä yksityiskohtia, se on nopeampi nähdä, joten lähetän ensin koko koodin.
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs" #>
<#
List<string> types = new(){"Int", "Short", "Long", "Float", "Double", "Decimal"};
#>
public static class ParseExtensions
{
<# foreach (var type in types) { #>
<# var typeLower = type.ToLower(); #>
public static <#= typeLower #> Parse<#= type #>(this string self, <#= typeLower #> defaultValue)
{
return <#= typeLower #>.TryParse(self, out var val) ? val : defaultValue;
}
<# } #>
}
Määrittelemme tyypit List
, jotka luodaan ensimmäistä kertaa , ja käännämme ne foreach
sitten ympäri luodaksesi kyseisen määrän menetelmiä.
T4: n komentosarjaosa on kirjoitettu C #: lla, joten jos ymmärrät C #: n, sinun pitäisi pystyä ymmärtämään se.
Kun teet tämän, seuraava koodi luodaan:
public static class ParseExtensions
{
public static int ParseInt(this string self, int defaultValue)
{
return int.TryParse(self, out var val) ? val : defaultValue;
}
public static short ParseShort(this string self, short defaultValue)
{
return short.TryParse(self, out var val) ? val : defaultValue;
}
public static long ParseLong(this string self, long defaultValue)
{
return long.TryParse(self, out var val) ? val : defaultValue;
}
public static float ParseFloat(this string self, float defaultValue)
{
return float.TryParse(self, out var val) ? val : defaultValue;
}
public static double ParseDouble(this string self, double defaultValue)
{
return double.TryParse(self, out var val) ? val : defaultValue;
}
public static decimal ParseDecimal(this string self, decimal defaultValue)
{
return decimal.TryParse(self, out var val) ? val : defaultValue;
}
}
Luodaan koodia, joten voit käyttää sitä ohjelmassasi sellaisenaan.
Hieman enemmän T4:stä
Vaikka T4-komentosarjaosa voidaan kirjoittaa C #: lla, on tarpeen erottaa T4 C # -koodi tosiasiallisesti luodusta C # -koodista.
Osa, joka tekee tämän eron, on <# .... #>
.
<# .... #>
on koodi, joka suoritetaan komentosarjana, ei koodi, joka todellisuudessa tulostetaan T4:n komentosarjaosassa.
<# .... #>
C #: n sisältöä ei selitetä, koska ne ovat sellaisia kuin ne ovat, mutta <# .... #>
kehyksiä on useita.
Voit käyttää kutakin seuraavista tavoista.
Koodin | selitys |
---|---|
<#@ .... #> |
Sitä käytetään pääasiassa eri otsikoiden ilmoittamisessa. Sitä käytetään T4-koodin assembly alussa ja import . |
<# .... #> |
Kirjoita koodi, jonka T4 käsittelee. Se voidaan jakaa useisiin riveihin. Kaikki tällä alueella kuvattu toimii vain toimintona eikä vaikuta tulostustekstiin. |
<#= .... #> |
Tätä käytetään, kun haluat tulostaa arvon, kuten muuttujan, tulostuloksena. string text = "Sample"; Jos esimerkiksi kirjoitat muuttujan <#= text #> nimeltä , tulostetaan Sample . |
<#+ .... #> |
Käytetään luokkien ja menetelmien määrittämiseen. Pohjimmiltaan se on kirjoitettu T4-tiedoston loppuun. |
Tietoja T4-editorista
Jos sinulla ei ole laajennusta Visual Studiossa, .tt-tiedoston avaaminen näkyy mustavalkoisena tekstinä ilman väriä, mikä on melko vaikea nähdä.
Jotkut niistä voivat näyttää .tt-tiedostojen laajennuksen helposti luettavalla tavalla, joten etsi haluamasi. Koska se on vapaaehtoisten tekemä, sisältö voi muuttua vuodenajan ja Visual Studion version mukaan. Laajennuksia voidaan lisätä Visual Studio -valikon Laajennukset-kohdasta.
Tässä on mitä näin Visual Studio 2022:ssa laajennuksella nimeltä "T4 Language".