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


Oktatóanyag: Sabloncsomag 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 harmadik része, amely bemutatja, hogyan hozhat létre, telepíthet és távolíthat el sablonokat a dotnet new paranccsal való használatra.

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

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

  • Sabloncsomag létrehozása a Microsoft.TemplateEngine.Authoring.Templates NuGet-csomag használatával.
  • Sabloncsomag telepítése NuGet-csomagfájlból.
  • Távolítsa el a sabloncsomagot csomagazonosító alapján.

Előfeltételek

  • .NET 9 vagy újabb verzió.

  • Töltse ki a 1. rész és a 2. rész elemeit az oktatóanyag-sorozatból.

    Ez az oktatóanyag az oktatóanyag-sorozat első két részében létrehozott két sablont használja. Használhat egy másik sablont, amíg a sablont mappaként másolja a munka\tartalom mappába.

  • Nyisson meg egy terminált, és keresse meg a működő mappát.

  • Telepítse a Microsoft.TemplateEngine.Authoring.Templates sablont a NuGet-csomagcsatornából.

    • Futtassa a dotnet new install Microsoft.TemplateEngine.Authoring.Templates parancsot a terminálból.

Sabloncsomag-projekt létrehozása

Egy sabloncsomag egy vagy több, NuGet-csomagba csomagolt sablon. Sabloncsomag telepítésekor vagy eltávolításakor a rendszer a csomagban található összes sablont hozzáadja vagy eltávolítja.

A sabloncsomagokat nuGet-csomag (.nupkg) fájl jelöli. És mint minden NuGet-csomag, feltöltheti a sabloncsomagot egy NuGet-hírcsatornába. A dotnet new install parancs támogatja a sabloncsomagok NuGet-csomagcsatornából, .nupkg fájlból vagy sablonnal rendelkező könyvtárból történő telepítését.

Általában egy C#-projektfájlt használ a kód fordításához és egy bináris fájl létrehozásához. A projekt azonban sabloncsomag létrehozásához is használható. A .csprojbeállításainak módosításával megakadályozhatja, hogy bármilyen kódot összeállítson, és ehelyett a sablonok összes eszközét erőforrásként tartalmazza. A projekt építésekor egy sablon NuGet-csomagot készít.

A létrehozni kívánt csomag tartalmazza a korábban létrehozott elemet és projektsablonokat .

A Microsoft.TemplateEngine.Authoring.Templates csomag a sablonkészítéshez hasznos sablonokat tartalmaz. A csomag telepítéséhez nuget.org NuGet-hírcsatornaként kell rendelkezésre állnia a munkakönyvtárban.

  1. A működő mappában futtassa a következő parancsot a sabloncsomag létrehozásához:

    dotnet new templatepack -n "AdatumCorporation.Utility.Templates"
    

    A -n paraméter a projektfájl nevét AdatumCorporation.Utility.Templates.csprojállítja be. Az alábbi kimenethez hasonló eredményt kell látnia.

    The template "Template Package" was created successfully.
    
    Processing post-creation actions...
    Description: Manual actions required
    Manual instructions: Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to _content_ folder. Fill in README.md.
    
  2. Ezután nyissa meg a AdatumCorporation.Utility.Templates.csproj fájlt egy kódszerkesztőben, és töltse ki a sablonban található tippek szerint:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <!-- The package metadata. Fill in the properties marked as TODO below -->
        <!-- Follow the instructions on https://learn.microsoft.com/nuget/create-packages/package-authoring-best-practices -->
        <PackageId>AdatumCorporation.Utility.Templates</PackageId>
        <PackageVersion>1.0</PackageVersion>
        <Title>AdatumCorporation Templates</Title>
        <Authors>Me</Authors>
        <Description>Templates to use when creating an application for Adatum Corporation.</Description>
        <PackageTags>dotnet-new;templates;contoso</PackageTags>
        <PackageProjectUrl>https://your-url</PackageProjectUrl>
    
        <PackageType>Template</PackageType>
        <TargetFramework>net8.0</TargetFramework>
        <IncludeContentInPack>true</IncludeContentInPack>
        <IncludeBuildOutput>false</IncludeBuildOutput>
        <ContentTargetFolders>content</ContentTargetFolders>
        <NoWarn>$(NoWarn);NU5128</NoWarn>
        <NoDefaultExcludes>true</NoDefaultExcludes>
        ... cut for brevity ...
    

A projekt XML-fájljának leírása

Az XML-kódrészlet <PropertyGroup> alatti beállítások két csoportra vannak bontva.

Az első csoport a NuGet-csomagokhoz szükséges tulajdonságokkal foglalkozik. A négy <Package*> beállításnak a NuGet-csomag tulajdonságaival kell rendelkeznie, hogy azonosítsa a csomagot egy NuGet-csatornán. A NuGet által használt <PackageId> érték a sabloncsomag eltávolítására is használható. A többi beállításnak, például a <Title> és a <PackageTags>, a NuGet-csatornán és a .NET-csomagkezelőben megjelenített metaadatokkal kell rendelkeznie. További információ a NuGet-beállításokról: NuGet és MSBuild tulajdonságok.

Megjegyzés:

Annak érdekében, hogy a sabloncsomag megjelenjen a dotnet new search eredmények között, <PackageType>-et Template-re kell állítani.

A második csoportban a <TargetFramework> beállítás biztosítja, hogy az MSBuild megfelelően fusson, amikor a csomagparancsot futtatja a projekt fordításához és csomagolásához. A csoport olyan beállításokat is tartalmaz, amelyek a projekt konfigurálásával kapcsolatosak, hogy a sablonok a létrehozásukkor a NuGet-csomag megfelelő mappájába kerüljenek.

  • A <NoWarn> beállítás letilt egy olyan figyelmeztető üzenetet, amely nem vonatkozik a sabloncsomag-projektekre.

  • A <NoDefaultExcludes> beállítás biztosítja, hogy a . (például .gitignore) kezdődő fájlok és mappák a sablon részét képezik. A NuGet-csomagok alapértelmezett viselkedése az, hogy figyelmen kívül hagyja ezeket a fájlokat és mappákat.

<ItemGroup> két elemet tartalmaz. Először is a <Content> elem tartalmazza a sablonok mappájának minden tartalmát. Úgy is van beállítva, hogy kizárja a bin mappát vagy a obj mappát, hogy megakadályozza a fordított kód bekerülését, ha tesztelte és lefordította a sablonokat. Másodszor, a <Compile> elem kizárja az összes kódfájl összeállítását, függetlenül attól, hogy hol találhatók. Ez a beállítás megakadályozza, hogy a sabloncsomag létrehozásához használt projekt megpróbálja lefordítani a kódot a sablonok mappahierarchiájában.

Tipp

További információ a NuGet metaadat-beállításairól: Sablon csomagolása NuGet-csomagba (nupkg-fájlba).

A létrehozott projektfájl msbuild feladatokat és honosítási beállításokat létrehozó sablont tartalmaz.

  <PropertyGroup>
    <LocalizeTemplates>false</LocalizeTemplates>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.TemplateEngine.Tasks" Version="*" PrivateAssets="all" IsImplicitlyDefined="true"/>
  </ItemGroup>

Fontos

A tartalom mappa egy SampleTemplate mappát tartalmaz. Töröld ezt a mappát, mivel bemutató céljából adták hozzá a szerzői sablonhoz.

Ezek az MSBuild-feladatok sablonérvényesítést és a sablonok képességeinek honosítását biztosítják. A honosítás alapértelmezés szerint le van tiltva. Honosítási fájlok létrehozásának engedélyezéséhez állítsa LocalizeTemplatestrueértékre.

Csomagolás és telepítés

Mentse a projektfájlt. A sabloncsomag létrehozása előtt ellenőrizze, hogy a mappaszerkezet helyes-e. A csomagolni kívánt sablonokat a tartalommappába , a saját mappájába kell helyezni. A mappaszerkezetnek a következő hierarchiához hasonlóan kell kinéznie:

working
│   AdatumCorporation.Utility.Templates.csproj
└───content
    ├───extensions
    │   └───.template.config
    │           template.json
    └───consoleasync
        └───.template.config
                template.json

A tartalom mappának két mappája van: bővítmények és consoleasync.

A terminálban a működő mappából futtassa a dotnet pack parancsot. Ez a parancs létrehozza a projektet, és létrehoz egy NuGet-csomagot a working\bin\Release mappában, az alábbi kimenetnek megfelelően:

MSBuild version 17.8.0-preview-23367-03+0ff2a83e9 for .NET
  Determining projects to restore...
  Restored C:\code\working\AdatumCorporation.Utility.Templates.csproj (in 1.16 sec).

  AdatumCorporation.Utility.Templates -> C:\code\working\bin\Release\net8.0\AdatumCorporation.Utility.Templates.dll
  Successfully created package 'C:\code\working\bin\Release\AdatumCorporation.Utility.Templates.1.0.0.nupkg'.

Ezután telepítse a sabloncsomagot a dotnet new install paranccsal. Windows rendszeren:

dotnet new install .\bin\Release\AdatumCorporation.Utility.Templates.1.0.0.nupkg

Linux vagy macOS rendszeren:

dotnet new install bin/Release/AdatumCorporation.Utility.Templates.1.0.0.nupkg

Az alábbihoz hasonló kimenetnek kell megjelennie:

The following template packages will be installed:
   C:\code\working\AdatumCorporation.Utility.Templates\bin\Release\AdatumCorporation.Utility.Templates.1.0.0.nupkg

Success: AdatumCorporation.Utility.Templates::1.0.0 installed the following templates:
Templates                                         Short Name               Language          Tags
--------------------------------------------      -------------------      ------------      ----------------------
Example templates: string extensions              stringext                [C#]              Common/Code
Example templates: async project                  consoleasync             [C#]              Common/Console/C#9

Ha feltöltötte a NuGet-csomagot egy NuGet-hírcsatornába, használhatja a dotnet new install <PACKAGE_ID> parancsot, amelyben a <PACKAGE_ID> ugyanaz, mint a <PackageId> beállítás a .csproj fájlból.

A sabloncsomag eltávolítása

Függetlenül attól, hogy hogyan telepítette a sabloncsomagot, akár közvetlenül a .nupkg fájllal, akár a NuGet-hírcsatornával, a sabloncsomag eltávolítása ugyanaz. Az eltávolítani kívánt sablon <PackageId>-ját használja. Az dotnet new uninstall parancs futtatásával lekérheti a telepített sablonok listáját.

C:\working> dotnet new uninstall
Currently installed items:
... cut to save space ...

  AdatumCorporation.Utility.Templates
    Details:
      NuGetPackageId: AdatumCorporation.Utility.Templates
      Version: 1.0.0
      Author: Me
    Templates:
      Example templates: async project (consoleasync) C#
      Example templates: string extensions (stringext) C#
    Uninstall Command:
      dotnet new uninstall AdatumCorporation.Utility.Templates

A dotnet new uninstall AdatumCorporation.Utility.Templates-t futtassa a sabloncsomag eltávolításához. A parancs adatokat ad ki arról, hogy milyen sabloncsomagokat távolítottak el.

Gratulálok! Telepített és eltávolított egy sabloncsomagot.

Következő lépések

Ha többet szeretne megtudni a sablonokról, amelyek többségét már megtanulta, tekintse meg a dotnet új cikkének egyéni sablonjait.