Uporaba programa Visual Studio in kompleta orodij za preoblikovanje predloge besedila (T4) za samodejno ustvarjanje kode

Stran posodobljena :
Datum ustvarjanja strani :

Delovno okolje

Visual Studio
  • Visual Studio 2022
.MREŽA
  • .NET 8.0
Windows
  • Okna 11

Predpogoji

Visual Studio
  • Deluje tudi z nekoliko starejšo različico
.MREŽA
  • Deluje tudi z nekoliko starejšo različico

Sprva

Običajno pri ustvarjanju kode mislite, da boste kodo ustvarili z ročnim vnašanjem znakov, če pa želite ustvariti kodo, ki temelji na kodi ali podatkih, ki jih mora ustvariti določen zakon, je primerno, da jo lahko samodejno ustvarite. V tem razdelku je opisano, kako uporabiti orodje za pretvorbo predloge besedila (T4) za samodejno ustvarjanje kode.

Ker je T4 skriptna oblika, je zelo enostavno ustvariti kodo v Visual Studiu takoj po ustvarjanju datoteke T4. Zapisano je, da samodejno generira kodo, vendar je ustvarjeno samo besedilo, zato je poleg programov mogoče ustvariti karkoli v besedilni obliki, kot sta XML in JSON.

Glavni namen tega nasveta je razložiti korake za dejansko samodejno ustvarjanje kode v T4, zato se ne bom spuščal v podrobnosti T4 v globino. Če ste kdaj napisali program v C#, ga boste takoj razumeli. Če želite izvedeti več o T4, preverite uradno spletno stran in druga spletna mesta.

Pogoj

Ta namig predvideva naslednje:

  • Visual Studio, nameščen v sistemu Windows
  • Razumevanje C#

T4 se lahko uporablja v večini projektov, z izjemo nekaj, tako da lahko med namestitvijo v bistvu izberete svojo delovno obremenitev.

Ustvarjanje projekta

Kot smo že omenili, se T4 lahko uporablja v večini projektov, z izjemo nekaterih, zato ni pomembno, kakšno vrsto projekta ustvarite. V tem primeru ustvarjamo projekt za konzolno aplikacijo.

Ustvarjanje datoteke T4 (.tt)

Z desno tipko miške kliknite datoteko ali mapo projekta, da dodate nov element.

Kliknite gumb Ogled vseh predlog.

Izberite »Splošno« iz drevesa na levi in »Besedilne predloge« s seznama na sredini. Ime datoteke je poljubno.

Takoj po ustvarjanju datoteke se lahko prikaže pogovorno okno, podobno spodnjemu. To se prikaže, ko je datoteka T4 samodejno ustvarjena. Datoteke T4 se samodejno ustvarijo vsakič, ko je datoteka shranjena ali si jo ogledate. Če želite izvesti postopek samodejnega generiranja, kot je, kliknite gumb »V redu«. Če ne želite, da se pogovorno okno prikaže vsakič, potrdite »Ne pokaži več tega sporočila«. Upoštevajte, da če je nezakonit postopek opisan v datoteki T4, kot je navedeno v pogovornem oknu, bo izveden v skladu s tem.

Ko dodate datoteko, lahko vidite, da je bila datoteka .tt dodana v Raziskovalca rešitev.

Vsebina datoteke je naslednja.

Če razširite datoteko .tt v Raziskovalcu rešitev, boste videli besedilno datoteko z istim imenom. To bo samodejno ustvarjena datoteka. Ker še nismo napisali ničesar, je vsebina datoteke prazna.

Spreminjanje samodejno ustvarjene datoteke v .cs datoteko

Če uporabljate T4, boste najverjetneje želeli uporabiti razširitev .cs namesto privzete .txt, saj bo koda za vaš program ustvarjena samodejno. V tem primeru odprite datoteko .tt in output extension .cs jo shranite z .

Samodejno ustvarjena datoteka bi zdaj morala imeti pripono .cs. Ime datoteke je enako imenu datoteke .tt, zato če ga želite spremeniti, spremenite ime datoteke .tt.

Za zdaj nekaj napišite in izpišite v samodejno ustvarjeno datoteko

V T4 je vsebina tega, kar pišete, v bistvu izhodna takšna, kot je. <# ... #> je proces T4, ostalo pa je dejansko izhodno besedilo.

Na primer, dajmo ga v datoteko .tt, kot sledi.

<#@ 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!!");
  }
}

Ko jo shranite, bi morala samodejno ustvarjena datoteka izpisati točno tako, kot ste jo napisali.

Izhod je koda, zato ga seveda lahko pokličete tudi iz Program.cs.

Poskusite samodejno ustvariti kodo

Kot je navedeno zgoraj, sem potrdil, da bo to, kar sem napisal, izhod takšen, kot je, vendar se to ne razlikuje od tega, kar sem napisal običajno. Zdaj pa dejansko uporabimo skript T4 za samodejno ustvarjanje kode. Obstaja veliko različnih načinov, kako ga narediti, zato prosimo, da tukaj podate le kratko razlago in jo nato predelate, kot želite.

Tokrat na primer ustvarimo metodo, ki doda metodo razčlenjevanja vsake vrste v niz in vrne ParseXXXX določeno privzeto vrednost, če je ni mogoče pretvoriti. To je le primer ustvarjanja, zato ga prosim dodajte, če menite, da manjkajo deli.

Če lahko razumete C # brez razlage podrobnosti, ga boste hitreje videli, zato bom najprej objavil celotno kodo.

<#@ 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;
  }
<# } #>
}

Kar počnemo, je, da prvič definiramo tipe List , ki jih ustvarimo z , in jih nato obrnemo foreach , da ustvarimo to število metod. Skriptni del T4 je napisan v C#, tako da, če razumete C#, bi ga morali razumeti.

Ko to naredite, se ustvari naslednja koda:

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;
  }
}

Kar je ustvarjeno, je koda, tako da jo lahko uporabite v svojem programu, kot je.

Malo več o T4

Čeprav je del skripta T4 mogoče zapisati v C#, je treba ločiti kodo T4 C# od kode C#, ki je dejansko ustvarjena. Del, ki to razlikuje, je <# .... #> . <# .... #> je koda, ki se izvede kot skripta, ne koda, ki je dejansko izpisana v skriptnem delu T4.

<# .... #> Vsebina C# ni pojasnjena, ker so takšni, kot so, vendar <# .... #> obstaja več vrst okvirjev. Obstajajo naslednji načini za uporabo vsakega.

Razlaga kode
<#@ .... #> Uporablja se predvsem pri deklaraciji različnih glav. Uporablja se na začetku kode T4 v deklaraciji assembly in import .
<# .... #> Napišite kodo, ki jo obdeluje T4. Lahko ga razdelimo na več vrstic. Vse, kar je opisano v tem obsegu, deluje samo kot operacija in ne vpliva na izhodno besedilo.
<#= .... #> To se uporablja, če želite kot izhodni rezultat izpisati vrednost, kot je spremenljivka. string text = "Sample"; Na primer, če napišete spremenljivko<#= text #>, imenovano , bo izhod.Sample
<#+ .... #> Uporablja se za določanje razredov in metod. V bistvu je napisan na koncu datoteke T4.

O urejevalniku T4

Če v programu Visual Studio nimate pripone, bo odpiranje datoteke .tt prikazano v črno-belem besedilu brez barve, ki jo je težko videti.

Nekateri od njih lahko prikažejo pripono za datoteke .tt na enostaven berljiv način, zato poiščite tisto, ki vam je všeč. Ker so jo izdelali prostovoljci, se lahko vsebina spremeni glede na letni čas in različico programa Visual Studio. Razširitve lahko dodate v meniju Visual Studio v razdelku Razširitve.

Tukaj je tisto, kar sem videl v Visual Studio 2022 z razširitvijo, imenovano »T4 Language«.