Megosztás a következőn keresztül:


Oktatóanyag: Elemsablon létrehozása

A .NET használatával projekteket, fájlokat és erőforrásokat létrehozó sablonokat hozhat létre és helyezhet üzembe. Ez az oktatóanyag egy sorozat első része, amely bemutatja, hogyan hozhat létre, telepíthet és távolíthat el sablonokat a dotnet new parancshoz való használatra.

A kész sablont a .NET-minták GitHub-adattárában tekintheti meg.

Jótanács

Az elemsablonok nem jelennek meg a Visual StudioÚj elem> párbeszédpanelén.

A sorozat ezen részében megtanulhatja, hogyan:

  • Hozzon létre egy osztályt egy elemsablonhoz.
  • Hozza létre a sablon konfigurációs mappát és fájlt.
  • Telepítsen egy sablont egy fájl elérési útvonaláról.
  • Elemsablon tesztelése.
  • Elemsablon eltávolítása.

Előfeltételek

  • .NET 9 vagy újabb verzió.

  • A referenciacikk ismerteti a sablonok alapjait és azok összeállításának módját. Ezen információk némelyikét itt ismételjük meg.

  • Nyisson meg egy terminált, és keresse meg azt a mappát, amelyben tárolni és tesztelni fogja a sablonokat.

A szükséges mappák létrehozása

Ez a sorozat egy "munkamappát" használ, amelyben a sablonforrás található, és egy "tesztelési mappát" a sablonok teszteléséhez. A munkamappának és a tesztelési mappának ugyanabban a szülőmappában kell lennie.

Először hozza létre a szülőmappát, a név nem számít. Ezután hozzon létre két munka éstesztelés nevű almappát. A munkamappában hozzon létre egy almappát, amelyet tartalomnak hívnak.

A mappaszerkezetnek az alábbihoz hasonlóan kell kinéznie.

parent_folder
├───test
└───working
    └───content

Elemsablon létrehozása

Az elemsablonok olyan sablontípusok, amelyek egy vagy több fájlt tartalmaznak. Az ilyen típusú sablonok akkor hasznosak, ha már rendelkezik projektel, és egy másik fájlt szeretne létrehozni, például egy konfigurációs fájlt vagy egy kódfájlt. Ebben a példában egy olyan osztályt hoz létre, amely bővítménymetódust ad hozzá a sztringtípushoz.

A terminálban lépjen a munka\tartalom mappába, és hozzon létre egy új, bővítmények nevű almappát.

working
└───content
    └───extensions

Lépjen a bővítmények mappába, és hozzon létre egy új fájlt StringExtensions.cs néven. Nyissa meg a fájlt egy szövegszerkesztőben. Ez az osztály egy olyan bővítménymetódust Reverse biztosít, amely megfordítja egy sztring tartalmát. Illessze be a következő kódot, és mentse a fájlt:

namespace System;

public static class StringExtensions
{
    public static string Reverse(this string value)
    {
        char[] tempArray = value.ToCharArray();
        Array.Reverse(tempArray);
        return new string(tempArray);
    }
}

Most, hogy a sablon tartalma elkészült, hozza létre a sablon konfigurációját.

A sablonkonfiguráció létrehozása

Az oktatóanyag ezen részében a sablonmappa a working\content\extensions helyen található.

A .NET azért ismeri fel a sablonokat, mert egy speciális mappával és konfigurációs fájllal rendelkeznek, amely a sablonmappa gyökerében található.

Először hozzon létre egy .template.config nevű új almappát, és lépjen be abba. Ezután hozzon létre egy template.jsonnevű új fájlt. A mappaszerkezetnek így kell kinéznie:

working
└───content
    └───extensions
        └───.template.config
                template.json

Nyissa meg a template.json a kedvenc szövegszerkesztőjével, és illessze be a következő JSON-kódba, és mentse.

{
    "$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"
      }
    }
  }

Ez a konfigurációs fájl tartalmazza a sablon összes beállítását. Megtekintheti az alapbeállításokat, mint például name és shortName, de van egy tags/type érték is, amely item-re van állítva. Ez "elem" sablonként kategorizálja a sablont. Nincs korlátozás a létrehozott sablon típusára. A item és project értékek olyan általános nevek, amelyeket a .NET javasol, hogy a felhasználók könnyen szűrhessék a keresett sablon típusát.

A(z) classifications elem azt a címkék oszlopot jelenti, amely akkor látható, amikor a dotnet new fut, és megkapja a sablonok listáját. A felhasználók besorolási címkék alapján is kereshetnek. Ne keverje össze a tagstemplate.json fájl tulajdonságát a classifications címkék listájával. Két különböző fogalom, amelyek sajnos ugyanazt a nevet viselik. A template.json fájl teljes sémája a JSON-sématárolóban található, és a template.jsonhivatkozásában található. A template.json fájlról további információt a dotnet templating wikijében talál.

Ennek symbols a JSON-objektumnak a része határozza meg a sablonban használható paramétereket. Ebben az esetben egy paraméter van definiálva. ClassName A megadott paraméter a következő beállításokat tartalmazza:

  • type - Ez egy kötelező beállítás, amelyet be kell állítani parameter.
  • description - A sablon súgójában kinyomtatott paraméter leírása.
  • datatype - A paraméterérték adattípusa a paraméter használatakor.
  • replaces – Olyan szöveges értéket ad meg, amelyet minden sablonfájlban le kell cserélni a paraméter értékével.
  • fileRename – Ehhez hasonlóan replacesez egy szöveges értéket ad meg, amelyet az összes sablonfájl nevére cserél a paraméter értéke.
  • defaultValue – A paraméter alapértelmezett értéke, ha a paramétert nem a felhasználó adja meg.

A sablon használata esetén a felhasználó megadhat egy értéket a ClassName paraméterhez, és ez az érték felülírja a paraméter összes előfordulását StringExtensions. Ha nincs megadva érték, az defaultValue kerül használatra. Ehhez a sablonhoz két előfordulása StringExtensionsvan: a fájl StringExtensions.cs és a StringExtensions osztály. Mivel a defaultValue paraméter értéke az StringExtensions, a fájlnév és az osztálynév változatlan marad, ha a paraméter nincs megadva a sablon használatakor. Ha például dotnet new stringext -ClassName MyExtsegy értéket ad meg, a fájl MyExts.cs , az osztály pedig MyExts névre lesz átnevezve.

A sablonhoz elérhető paraméterek megtekintéséhez használja a -? paramétert a sablon nevével:

dotnet new stringext -?

Ez a következő kimenetet hozza létre:

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

Most, hogy rendelkezik egy érvényes .template.config/template.json fájllal, a sablon készen áll a telepítésre. A terminálban keresse meg a bővítmények mappát, és futtassa a következő parancsot az aktuális mappában található sablon telepítéséhez:

  • Windows rendszeren: dotnet new install .\
  • Linux vagy macOS rendszeren: dotnet new install ./

Ez a parancs megjeleníti a telepített sablonok listáját, amelynek tartalmaznia kell az Önét is.

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

Az elemsablon tesztelése

Most, hogy telepített egy elemsablont, próbálja ki.

  1. Nyissa meg a tesztmappát .

  2. Hozzon létre egy új konzolalkalmazást dotnet new console, amely egy olyan működő projektet hoz létre, amelyet egyszerűen tesztelhet a dotnet run paranccsal.

    dotnet new console
    

    A kimenet az alábbiakhoz hasonlóan jelenik meg.

    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.
    
  3. Futtassa a projektet az alábbi paranccsal.

    dotnet run
    

    A következő kimenetet kapja.

    Hello, World!
    
  4. Futtassa a(z) dotnet new stringext parancsot, hogy a sablonból létrehozza a StringExtensions.cs fájlt.

    dotnet new stringext
    

    A következő kimenetet kapja.

    The template "Example templates: string extensions" was created successfully.
    
  5. Módosítsa a Program.cs kódját a "Hello, World!" sztring megfordításához a sablon által biztosított bővítménymetódussal.

    Console.WriteLine("Hello, World!".Reverse());
    

    Futtassa újra a programot, és lássa, hogy az eredmény megfordult-e.

    dotnet run
    

    A következő kimenetet kapja.

    !dlroW ,olleH
    

Gratulálok! Létrehozott és üzembe helyezett egy elemsablont a .NET-tel. Az oktatóanyag-sorozat következő részének előkészítésekor távolítsa el a létrehozott sablont. A tesztmappában lévő összes fájlt és mappát is törölje. Ezzel visszaáll egy tiszta, az oktatóanyag-sorozat következő részére kész állapotba.

A sablon eltávolítása

A terminálban keresse meg a bővítmények mappát, és futtassa a következő parancsot az aktuális mappában található sablonok eltávolításához:

  • Windows rendszeren: dotnet new uninstall .\
  • Linux vagy macOS rendszeren: dotnet new uninstall ./

Ez a parancs megjeleníti az eltávolított sablonok listáját, amelynek tartalmaznia kell az Önét is.

Success: <root path>\working\content\extensions was uninstalled.

dotnet new uninstall Bármikor megtekintheti a telepített sabloncsomagok listáját, beleértve az egyes sabloncsomagok esetében az eltávolításhoz szükséges parancsot is.

Következő lépések

Ebben az oktatóanyagban létrehozott egy elemsablont. Ha meg szeretné tudni, hogyan hozhat létre projektsablont, folytassa ezt az oktatóanyag-sorozatot.