Closed3

.NETの使い方メモ

みなみんみなみん

カスタムテンプレートを作成する(プロジェクト)

流れ

  1. ディレクトリを用意する
  2. .template.configのディレクトリを用意する
  3. template.jsonを用意/記述
  4. 諸々配置
  5. テンプレートのビルド
  6. カスタムテンプレートのインストール

ディレクトリを用意する

$ mkdir Template1
$ cd Template1

.template.configを用意する

$ mkdir .template.config
$ cd .template.config

template.jsonを用意/記述

{
    "$schema": "http://json.schemastore.org/template",
    "author": "[作成者]",
    "classifications": [ "Common", "Console" ],
    "identity": "[適当な名称]",
    "name": "[テンプレート名]",
    "shortName": "[テンプレート名(省略形)]"
}

shortName:で指定したものがコマンド上で呼び出す際の名称になる。

諸々配置(例)

作成したTemplate1ディレクトリ配下にプロジェクトに配置したいものを配置していく。

$ cd ..

ここではconsoleテンプレートからProngram.csの内容(.NET 6.0)を変更したものをカスタムする。

$ dotnet new console

※ 先にプロジェクトを作成してから、template.json等を作った方がいいかもしれない。

template.json

{
    "$schema": "http://json.schemastore.org/template",
    "author": "Minamin",
    "classifications": [ "Common", "Console" ],
    "identity": "Minamin.Template1",
    "name": "Template1",
    "shortName": "template1"
}

Program.cs(変更前)

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

Program.cs(変更後)

using System;

namespace MyApp // Note: actual namespace depends on the project name.
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

最後にMemo.txtも追加してみる。

Memo.txt

Template1

Template1で配置したファイル

└───Template1
    │   Program.cs
    │   Memo.txt
    │   Template1.csproj
    │
    └───.template.config
            template.json
    └───obj
            ...

テンプレートのビルド

$ pwd
~~~/Template1
$ dotnet run
Hello World!

作成したテンプレートのインストール

作成したTemplate1ディレクトリ内でコマンドを実行する

$ pwd
~~~/Template1
$ dotnet new --install

確認

$ dotnet new --list
これらのテンプレートは、入力:  と一致しました

テンプレート名                                短い名前        言語        タグ                      
--------------------------------------------  --------------  ----------  --------------------------
ASP.NET Core Empty                            web             [C#],F#     Web/Empty                 
ASP.NET Core gRPC Service                     grpc            [C#]        Web/gRPC                  
ASP.NET Core Web API                          webapi          [C#],F#     Web/WebAPI                
ASP.NET Core Web App                          webapp,razor    [C#]        Web/MVC/Razor Pages       
ASP.NET Core Web App (Model-View-Controller)  mvc             [C#],F#     Web/MVC                   
ASP.NET Core with Angular                     angular         [C#]        Web/MVC/SPA               
ASP.NET Core with React.js                    react           [C#]        Web/MVC/SPA               
Blazor Server App                             blazorserver    [C#]        Web/Blazor                
Blazor WebAssembly App                        blazorwasm      [C#]        Web/Blazor/WebAssembly/PWA       
dotnet gitignore ファイル                     gitignore                   Config                    
dotnet ローカル ツール マニフェスト ファイル  tool-manifest               Config                    
EditorConfig ファイル                         editorconfig                Config                    
global.json ファイル                          globaljson                  Config                    
MSTest Test Project                           mstest          [C#],F#,VB  Test/MSTest               
MVC ViewImports                               viewimports     [C#]        Web/ASP.NET               
MVC ViewStart                                 viewstart       [C#]        Web/ASP.NET               
NuGet Config                                  nugetconfig                 Config                    
NUnit 3 Test Item                             nunit-test      [C#],F#,VB  Test/NUnit                
NUnit 3 Test Project                          nunit           [C#],F#,VB  Test/NUnit                
Protocol Buffer File                          proto                       Web/gRPC                  
Razor Class Library                           razorclasslib   [C#]        Web/Razor/Library         
Razor Component                               razorcomponent  [C#]        Web/ASP.NET               
Razor Page                                    page            [C#]        Web/ASP.NET               
Template1                                     template1                   Common/Console            
Web 構成                                      webconfig                   Config                    
Worker Service                                worker          [C#],F#     Common/Worker/Web         
xUnit Test Project                            xunit           [C#],F#,VB  Test/xUnit                
クラス ライブラリ                             classlib        [C#],F#,VB  Common/Library            
コンソール アプリ                             console         [C#],F#,VB  Common/Console            
ソリューション ファイル                       sln,solution                Solution                  

Template1のテンプレートが追加されている。

テンプレートを使ってみる

$ dotnet new template1
みなみんみなみん

インストールしたカスタムテンプレートをアンインストールする

$ dotnet new --uninstall [カスタムテンプレートのパス]
このスクラップは2022/10/14にクローズされました