1637570640
.NETには、さまざまなコンテキストでアプリケーションをすばやくスキャフォールディングするのに役立ついくつかのプロジェクトテンプレートが付属しています。特定のコンテキストで独自のプロジェクトテンプレートを作成する必要がある場合があります。この記事では、.NETCLIおよびVisualStudioで使用する独自のプロジェクトテンプレートを作成する方法について説明します。
テンプレートは開発者の生産性を向上させ、ベストプラクティスの促進に役立つ可能性があります。.NET開発者には、コンソールアプリ、クラスライブラリ、単体テストプロジェクト、ASP.NET Coreアプリなど、新しいプロジェクトを開始したり、既存のプロジェクトに新しいアイテムを追加したりするための多くの組み込みテンプレートがあります。もちろん、あなたは、両方それらを使用することができますのVisual Studioとで.NET CLI。この記事では、プロジェクトテンプレート、つまり特定の機能を備えた新しいプロジェクトを作成できるテンプレートに焦点を当てます。
Visual Studioでは、[新規]メニュー項目を選択するだけでプロジェクトテンプレートリストを探索できますが、.NET CLIでは、コマンドを使用してテンプレートを操作できます。たとえば、次のコマンドを実行すると、マシンで使用可能なテンプレートのリストが表示されます。dotnet new
dotnet new --list
以下は、コンソールに表示されるテンプレートリストの例です。
したがって、たとえば、新しいコンソールアプリケーションを作成する場合は、上記のリストにあるテンプレートの短い名前を使用するコマンドを実行できます。あなたは見つけることができる公式ドキュメントから始まる内蔵されたテンプレートの説明を。dotnet new console
dotnet new
NuGetリポジトリまたは独自のマシンから他のテンプレートをインストールおよびアンインストールするなど、他の多くのテンプレート管理タスクでも役立ちます。この記事全体でそれを使用する方法を学びます。
作成するプロジェクトテンプレートは、認証にAuth0を使用するASP.NETWebアプリケーションテンプレートです。このテンプレートを使用すると、開発者はAuth0対応のスターターWebアプリケーションをすぐに実行できます。
実装するプロジェクトテンプレートには、.NET Core 3.1以降(.NET 5.0)が必要です。また、テンプレートは、バージョン16.8プレビュー以降のVisual Studio2019およびバージョン8.8以降のMac用VisualStudio2019でサポートされています。
プロジェクトテンプレートを作成する前に、いくつかのフォルダを作成して作業環境を準備しましょう。まず、ルートフォルダを作成します。次に、このフォルダーに移動して、2つのサブフォルダーを作成します:と。templates-playgroundtemplatestest
このプロセスの最後に、次のフォルダー構造を取得する必要があります。
templates-playground
├── templates
└── test
templates
フォルダは、プロジェクトテンプレートのソースコードが含まれます。そこに複数のテンプレートを配置できます。
このtest
フォルダーを使用して、そのプロジェクトテンプレートから新しいプロジェクトを作成します。
.NET Coreプロジェクトテンプレートは、次のもので構成されています。
プロジェクトのソースファイル
という名前の構成ファイル。template.json
この記事の目的上、テンプレートの基礎として機能する.NETプロジェクトを最初から構築することはしません。代わりに、既製のプロジェクトを使用します。
そのため、フォルダーに移動し、次のコマンドを使用してGitHubからプロジェクトのクローンを作成します。templates-playground/templates
cd templates-playground/templates
git clone \
-b starting-point \
https://github.com/auth0-blog/auth0-aspnet-webapp-project-template.git \
auth0-webapp
これらのコマンドは、フォルダーの下にサブフォルダーを作成し、そこにこのGitHubリポジトリのブランチのクローンを作成します。auth0-webapptemplates-playground/templatesstarting-point
前述のように、そのフォルダーにあるプロジェクトは、Auth0認証を使用するASP.NETWebアプリケーションです。このプロジェクトがどのように構築されたかについて詳しく知りたい場合は、「Auth0認証にC#拡張メソッドを使用する」の記事を参照してください。
次に、プロジェクトのルートフォルダー()内に名前を付けたサブフォルダーを作成します。次に、この新しく作成されたフォルダーに、次の内容の名前の新しいファイルを追加します。.template.configtemplates-playground/templates/auth0-webapptemplate.json
{
"$schema": "http://json.schemastore.org/template",
"author": "Andrea Chiarelli",
"classifications": [ "Web", "MVC", "Razor Pages" ],
"identity": "Auth0.NET.Mvc",
"name": "Auth0 ASP.NET Core App",
"shortName": "auth0webapp",
"tags": {
"language": "C#",
"type": "project"
}
}
このファイルは、テンプレートを作成するための重要なアイテムです。これには、.NETプロジェクトをプロジェクトテンプレートに変換するメタ情報が含まれています。上記の例では、最低限必要なプロパティが見つかります。
http://json.schemastore.org/template
dotnet new
type
C#(language
プロパティ)のプロジェクト(プロパティ)用であることを宣言します。使用可能な構成プロパティの完全なリストについては、このドキュメントを確認してください。
これまでに実行した簡単な手順で、作業中のプロジェクトテンプレートができました。フォルダ内で次のコマンドを実行して、ローカルにインストールしましょう。templates-playground/templates/auth0-webapp
dotnet new --install .
このコマンドを使用すると、.NETテンプレートエンジンは現在のフォルダ(.
)をテンプレートパッケージと見なすことができます。パッケージを作成する方法については、後で学習します。
テンプレートをインストールしたら、を実行します。次の図のように、既存のテンプレートの中に新しくインストールされたテンプレートが表示されます。dotnet new --list
素晴らしい!最初の.NETプロジェクトテンプレートを実行する準備ができました。
プロジェクトテンプレートの動作を確認するには、フォルダーに移動して次のコマンドを実行します。templates-playground/test
dotnet new auth0webapp -o myAuth0WebApp
myAuth0WebApp
ASP.NETプロジェクトのソースファイルを含むフォルダーを取得する必要があります。
実行の準備ができていることを確認するには、アプリケーションをAuth0に登録し、いくつかのパラメーターを使用して構成する必要があります。この手順により、アプリケーションユーザーはAuth0で認証できます。
これを行うには、Auth0アカウントが必要です。ここから無料でサインアップできます。
次に、Auth0ダッシュボードにアクセスし、[アプリケーション]セクションに移動し、次の手順に従ってアプリケーションをAuth0に登録します。
アプリケーションを作成したら、[設定]タブに移動し、Auth0ドメイン、クライアントID、およびクライアントシークレットをメモします。アプリケーションを構成し、Auth0と通信できるようにするには、これらの値が必要になります。
次に、値を[許可されたコールバックURL]フィールドに割り当て、値を[許可されたログアウトURL]フィールドに割り当てます。最初の値は、ユーザーが認証した後にコールバックするURLをAuth0に指示します。2番目の値は、ユーザーがログアウトした後にリダイレクトするURLをAuth0に指示します。https://localhost:5001/callbackhttps://localhost:5001/
最後に、[変更を保存]ボタンをクリックして適用します。
アプリケーションをAuth0に登録した後、ダッシュボードからいくつかのパラメーターを使用してアプリケーションを構成する必要があります。したがって、ASP.NETプロジェクトのルートフォルダーに移動して、ファイルを開きます。その内容は次のようになります。appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"Auth0": {
"Domain": "{DOMAIN}",
"ClientId": "{CLIENT_ID}",
"ClientSecret": "{CLIENT_SECRET}"
}
}
、、およびプレースホルダーをAuth0ダッシュボードの対応する値に置き換えて、ファイルを保存します。{DOMAIN}{CLIENT_ID}{CLIENT_SECRET}
クライアントシークレットをアプリケーションのパスワードと見なします。気をつけて、広めないでください。ここでは、サンプルアプリケーションがサーバー上で実行されることを意図しており、ユーザーがそれにアクセスできないため、クライアントシークレットをファイルに保存しています。
appsettings.json
これで、次のコマンドを実行してアプリケーションを起動できます。
dotnet run
アプリケーションが起動したら、ブラウザでhttps:// localhost:5001を指定します。次のページが表示されます。
ページの右上隅にある[ログイン]リンクをクリックすると、Auth0ユニバーサルログインページにリダイレクトされ、ユーザープロファイルページを認証してアクセスします。つまり、アプリケーションは、すべてのAuth0認証ロジックがすでに統合された状態で実行する準備ができています。
これまでのところ、作業中のプロジェクトテンプレートがありますが、元のプロジェクトのソースファイルを新しいフォルダーにコピーするだけなので、それほどエキサイティングには見えません。組み込みのテンプレートでできるように、新しいプロジェクトをカスタマイズしたいとします。
幸い、template.json構成ファイルを操作して、テンプレートジェネレーターのデフォルトの動作を変更できます。基本的な原則は、ユーザーがコマンドにオプションを渡すことでオーバーライドできるいくつかの設定を定義できることです。dotnet new <TEMPLATE_SHORT_NAME>
見てみましょう。
組み込みのテンプレートでコマンドを使用すると、新しいプロジェクトに割り当てる名前を指定できます。これにより、たとえば、アプリケーションに独自のグローバル名前空間を提供できます。通常、これはオプションを使用して実行できます。次のコマンドを実行するときに、このオプションを以前に使用したことがあります。dotnet new-o
dotnet new auth0webapp -o myAuth0WebApp
ただし、このコマンドmyAuth0WebApp
は、新しいプロジェクトを含むフォルダーを作成しました。ソースコードを見ると、グローバル名前空間が変更されていないことがわかります。
テンプレートを一般的な動作に準拠させるには、以下に示すように、構成ファイルにいくつかのプロパティを追加する必要があります。template.json
{
"$schema": "http://json.schemastore.org/template",
"author": "Andrea Chiarelli",
"classifications": [ "Web", "MVC", "Razor Pages" ],
"identity": "Auth0.NET.Mvc",
"name": "Auth0 ASP.NET Core App",
"shortName": "auth0webapp",
"sourceName": "Auth0.NET.Mvc",
"preferNameDirectory":true,
"tags": {
"language": "C#",
"type": "project"
}
}
sourceName
およびpreferNameDirectory
プロパティを追加しました。
sourceName
プロパティは、アプリケーションのグローバル名前空間でプロジェクトの名前を表します。このプロパティに、現在のアプリケーションの名前空間と一致する値を割り当てました。この値は、ユーザーが提供する場合、ユーザーからの値に置き換えられるプレースホルダーとしても機能します。Auth0.NET.Mvc
このpreferNameDirectory
パラメーターを使用すると、出力フォルダー名をプロジェクト名と一致させることができます。
これは、組み込みのプロジェクトテンプレートと同じ方法でカスタム名を指定することにより、新しいプロジェクトを作成できることを意味します。
変更したテンプレートをテストする前に、次のコマンドを使用してプロジェクトテンプレートをアンインストールします。
dotnet new -u <absolute_path_to_your_local_template>
カスタムパラメータを受け入れるようにプロジェクトテンプレートを構成することもできます。たとえば、Auth0テンプレートのユーザーが、新しいプロジェクトの作成中にAuth0構成パラメーターを提供できるようにすることができます。構成ファイルの内容を次のように置き換えましょう。template.json
{
"$schema": "http://json.schemastore.org/template",
"author": "Andrea Chiarelli",
"classifications": [ "Web", "MVC", "Razor Pages" ],
"identity": "Auth0.NET.Mvc",
"name": "Auth0 ASP.NET Core App",
"shortName": "auth0webapp",
"sourceName": "Auth0.NET.Mvc",
"preferNameDirectory":true,
"tags": {
"language": "C#",
"type": "project"
},
"symbols":{
"domain": {
"type": "parameter",
"description": "Your Auth0 domain.",
"defaultValue": "{DOMAIN}",
"replaces":"{DOMAIN}"
},
"clientId": {
"type": "parameter",
"description": "Your Auth0 client id.",
"defaultValue": "{CLIENT_ID}",
"replaces":"{CLIENT_ID}"
},
"clientSecret": {
"type": "parameter",
"description": "Your Auth0 client secret.",
"defaultValue": "{CLIENT_SECRET}",
"replaces":"{CLIENT_SECRET}"
}
}
}
追加したsymbol
3つのカスタムパラメータを定義するプロパティを、: 、domain
、。clientId
clientSecret
これらのパラメーターは、上記で学習したAuth0構成データを表します。
各パラメーターは、次の4つのプロパティで定義されます。
type
:これはシンボルのタイプを定義します(parameter
この場合はそうです)。description
:パラメータに割り当てる値の説明。defaultValue
:これは、ユーザーが何も割り当てない場合のパラメーターのデフォルト値です。replaces
:このプロパティは、プロジェクトテンプレートのソースコードのプレースホルダーを定義します。テンプレートエンジンはこのプレースホルダーを探し、ユーザーが指定した値に置き換えます。したがって、これらのパラメータをテストするには、プロジェクトテンプレートの現在インストールされているバージョンをアンインストールし、再インストールしてください。
cd templates-playground/templates/auth0-webapp
dotnet new -u <absolute_path_of_templates-playground/templates/auth0-webapp>
dotnet new -i .
テンプレートをインストールしたら、次のコマンドを実行して、使用可能なパラメーターを確認します。
dotnet new auth0webapp -h
の標準オプションとは別に、次の出力が表示されます。dotnet new
...
Auth0 ASP.NET Core App (C#)
Author: Andrea Chiarelli
Options:
-d|--domain Your Auth0 domain.
string - Optional
Default: {DOMAIN}
-c|--clientId Your Auth0 client id.
string - Optional
Default: {CLIENT_ID}
-cl|--clientSecret Your Auth0 client secret.
string - Optional
Default: {CLIENT_SECRET}
テンプレートで3つのカスタムパラメータを使用できるようにしました。短いバージョンが自動的に割り当てられていることに注意してください。
したがって、フォルダーに移動し、次のコマンドを入力して、この新機能をテストします。templates-playground/test
dotnet new auth0webapp \
-o mySecureWebApp \
-d <YOUR-AUTH0-DOMAIN> \
-c <YOUR-AUTH0-CLIENT-ID> \
-cl <YOUR-AUTH0-CLIENT-SECRET>
パラメータとして提供された値は、の一致するプレースホルダーを置き換えるため、アプリケーションを実行する準備が整います。appsettings.json
一般的な文字列パラメーターに加えて、限られた値のセットに制限されているパラメーターを構成できます。たとえば、ユーザーに新しいプロジェクトのターゲットフレームワークを選択させたい場合は、ファイルの内容を次のように変更する必要があります。template.json
{
"$schema": "http://json.schemastore.org/template",
"author": "Andrea Chiarelli",
"classifications": [ "Web", "MVC", "Razor Pages" ],
"identity": "Auth0.NET.Mvc",
"name": "Auth0 ASP.NET Core App",
"shortName": "auth0webapp",
"sourceName": "Auth0.NET.Mvc",
"preferNameDirectory": true,
"tags": {
"language": "C#",
"type": "project"
},
"symbols":{
"domain": {
"type": "parameter",
"description": "Your Auth0 domain.",
"defaultValue": "{DOMAIN}",
"replaces":"{DOMAIN}"
},
"clientId": {
"type": "parameter",
"description": "Your Auth0 client id.",
"defaultValue": "{CLIENT_ID}",
"replaces":"{CLIENT_ID}"
},
"clientSecret": {
"type": "parameter",
"description": "Your Auth0 client secret.",
"defaultValue": "{CLIENT_SECRET}",
"replaces":"{CLIENT_SECRET}"
},
"Framework": {
"type": "parameter",
"description": "The target framework for the project.",
"datatype": "choice",
"choices": [
{
"choice": "netcoreapp3.1",
"description": "Target .NET Core 3.1"
},
{
"choice": "net5.0",
"description": "Target .NET 5"
}
],
"defaultValue": "netcoreapp3.1",
"replaces": "netcoreapp3.1"
}
}
}
新しいパラメータ定義を追加しました:Framework
。実際には、これは組み込みパラメーターですが、制限された値を使用してカスタムパラメーターを定義するアプローチも同様に有効です。
パラメータの名前が大文字になっていることに注意してください。これは組み込みパラメーターであるため、この場合を維持する必要があります。そうしないと、VisualStudioでこのテンプレートを使用すると問題が発生する可能性があります。
すでに知っているパラメータのプロパティに加えて、さらに2つあります。
datatype
:choice
値を割り当てることにより、このプロパティは値の制限を有効にします。choices
:これは、パラメーターの有効な値の配列です。有効な値(choice
)とそのdescription
。の2つのプロパティを持つ各アイテム。上記のFramework
定義では、有効な値はとであり、前者がデフォルト値であると記載されています。この特定のケースでは、Frameworkパラメーターの有効な値が公式の.NETターゲットフレームワークと一致する必要があることを考慮してください。netcoreapp3.1net5.0
ここで、たとえば、auth0webapp
テンプレートから.NET 5.0をターゲットとする新しいプロジェクトを生成する場合は、次のコマンドを実行することでそれを実現できます。
dotnet new -auth0webapp -o MySecureWebApp -f net5.0
このサンプルプロジェクトでは、プロジェクトのコードは.NET3.1と.NET5.0の両方で同じままです。フレームワークによってコードが変更される場合は、プリプロセッサディレクティブを使用し
#if
てコードを適合させる必要がある場合があります。
これまで、.NETプロジェクトテンプレートを作業フォルダーからインストールするだけで、ローカルでテストしてきました。次に、NuGetパッケージを作成して配布したり、NuGetリポジトリに公開したりする方法を学習します。ちなみに、NuGetパッケージを作成することは、VisualStudioでテンプレートを使用するための前提条件です。
テンプレートのNuGetパッケージの作成は非常に簡単です。開始するには、フォルダに移動します。次に、次の内容で名前が付けられた新しいファイルを追加します。templates-playgroundTemplatePack.csproj
<!-- templates-playground/TemplatePack.csproj -->
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<PackageType>Template</PackageType>
<PackageVersion>1.0</PackageVersion>
<PackageId>Auth0.Templates</PackageId>
<Title>Auth0 Templates</Title>
<Authors>Andrea Chiarelli</Authors>
<Description>Template for creating an ASP.NET web application with Auth0 authentication.</Description>
<PackageTags>dotnet-new;templates;auth0</PackageTags>
<TargetFramework>netcoreapp3.1</TargetFramework>
<IncludeContentInPack>true</IncludeContentInPack>
<IncludeBuildOutput>false</IncludeBuildOutput>
<ContentTargetFolders>content</ContentTargetFolders>
<NoWarn>$(NoWarn);NU5128</NoWarn>
</PropertyGroup>
<ItemGroup>
<Content Include="templates\**\*" Exclude="templates\**\bin\**;templates\**\obj\**" />
<Compile Remove="**\*" />
</ItemGroup>
</Project>
ご覧のとおり、これはC#プロジェクトファイルです。ただし、コードをコンパイルしてアセンブリを生成するための設定が含まれているのではなく、NuGetパッケージを生成するための設定が含まれています。
ファイルのセクションには、パッケージのタイプ、タイトル、作成者など、パッケージを定義するいくつかの設定があります。特に、この設定はパッケージを識別し、すぐにわかるように、マシン上でパッケージを管理するために使用されます。この設定により、NuGetリポジトリでパッケージを分類するためのいくつかのタグを定義できます。<PropertyGroup><PackageId><PackageTags>
このセクションでは、考慮すべきファイル()とそれらに対して実行するアクション()について説明します。<ItemGroup><Content><Compile>
この設定では、フォルダーの下にあるすべてのファイルを含める必要があり、生成されたファイルをすべて除外する必要があることを指定しています。この設定により、実際にはコンパイルが防止されます。<Content>templates<Compile>
この例で作成しているパッケージにはプロジェクトテンプレートが1つだけ含まれていますが、テンプレートパッケージには1つのファイルに複数のテンプレートを含めることができます。
次に、ファイルの同じフォルダーで、次のコマンドを実行してNuGetパッケージを作成します。TemplatePack.csproj
dotnet pack
このコマンドは、フォルダー内に名前が付けられたパッケージを生成します。これは、公開する場合に、公式のNuGetリポジトリまたはその他のNuGetリポジトリインスタンスにアップロードする必要があるファイルです。Auth0.Templates.1.0.0.nupkgtemplates-playground/bin/Debug
パッケージをローカルでテストするにauth0webapp
は、マシンからテンプレートをアンインストールしたことを確認し、フォルダーで次のコマンドを実行します。templates-playground
dotnet new -i ./bin/Debug/Auth0.Templates.1.0.0.nupkg
それ以外の場合、NuGetパッケージをNuGetリポジトリにアップロードした場合は、次のコマンドを使用してインストールできます。
dotnet new -i Auth0.Templates
値はファイルからの設定の値であることに注意してください。インストール方法に関係なく、同じ識別子を使用してマシンからパッケージをアンインストールします。Auth0.Templates<PackageId>TemplatePack.csproj
dotnet new -u Auth0.Templates
.NETCLI用の機能するカスタマイズ可能なプロジェクトテンプレートを作成する手順を完了しました。ただし、プロジェクトテンプレートをVisual Studioでも使用できるようにするには、いくつかの追加の構成手順を適用する必要があります。
前に述べたように、でインストールされたテンプレートは、NuGetパッケージとしてインストールされたテンプレートのみを表示するVisualStudioには表示されません。これらのテンプレートをVisualStudioで表示するには、追加の手順を実行する必要があります。dotnet new -i
Windowsでは、[ツール] / [オプション]メニュー項目から[オプション]ダイアログを開きます。そのダイアログで、[環境/プレビュー機能]項目を選択し、次の図に示すように、[新しいプロジェクトにすべての.NETCoreテンプレートを表示する]チェックボックスをオンにします。
Visual Studio for Macでは、Visual Studio / [設定... ]メニュー項目から[設定]ダイアログを開く必要があります。そこで、次の図のように、[その他]項目の下の[プレビュー機能]を選択し、[新しいプロジェクトにすべての.NETCoreテンプレートを表示する]チェックボックスをオンにします。
テンプレートの可視性を有効にする方法の詳細については、このドキュメントを確認してください。
.NET CLIテンプレートの可視性を有効にすると、VisualStudioでテンプレートを使用できるようになります。ただし、さらにいくつかの調整を行わないと、ユーザーエクスペリエンスは最高になりません。たとえば、テンプレート構成をそのままにしておくと、VisualStudioのプロジェクト作成ダイアログにカスタムパラメーターが表示されなくなります。
このギャップを埋めるには、次のコンテンツを含むファイルをフォルダに追加する必要があります。ide.host.jsontemplates-playground/templates/auth0-webapp/template.config
{
"$schema": "http://json.schemastore.org/vs-2017.3.host",
"icon": "auth0.png",
"symbolInfo": [
{
"id": "domain",
"name": {
"text": "Auth0 Domain"
},
"isVisible": "true"
},
{
"id": "clientId",
"name": {
"text": "Auth0 Client Id"
},
"isVisible": "true"
},
{
"id": "clientSecret",
"name": {
"text": "Auth0 Client Secret"
},
"isVisible": "true"
}
]
}
このファイルは、VisualStudioに関連するデータを保持する役割を果たします。ide.host.json
それが基づいているスキーマへの参照に加えて、あなたはicon
プロパティに気付くかもしれません。このプロパティを使用すると、テンプレートリストでのテンプレートの外観をカスタマイズできます。提供されていない場合、デフォルトの汎用アイコンがプロジェクトテンプレートに関連付けられます。プロパティの値は、テンプレートアイコンとして使用する.png画像のファイル名です。ファイルはフォルダにあるはずです。.template.config
symbolInfo
プロパティは、Visual Studioのコンテキストでカスタムパラメータ情報を統合するアイテムの配列です。特に、id
プロパティはファイル内のシンボルアイテムと一致する必要があり、プロパティはそのシンボルに表示するラベルを定義します。最後に、プロパティはカスタムパラメータの可視性を有効にします。プロパティのデフォルト値はであるため、明示的に割り当てる必要があります。template.jsonname.textisVisibleisVisiblefalsetrue
お気づきかもしれませんがFramework
、ファイルでパラメータを指定する必要もありません。前述のように、パラメーターは特別なものであり、テンプレートエンジンはそれを自動的に認識します。ide.host.jsonFramework
これで、VisualStudioでプロジェクトテンプレートを使用する準備が整いました。いつものように、最初にフォルダに移動し、以前のバージョンのパッケージをアンインストールします。次に、新しいパッケージをビルドし、最後にインストールします。実行する必要のあるコマンドは次のとおりです。templates-playground
cd templates-playground
dotnet new -u Auth0.Templates
dotnet pack
dotnet new -i ./bin/Debug/Auth0.Templates.1.0.0.nupkg
この時点で、Visual Studioを起動し、新しいプロジェクトを作成します。使用可能なテンプレートのリストには、以下に示すように、Auth0 ASP.NET CoreAppテンプレートが含まれている必要があります。
プロジェクトテンプレートを選択すると、カスタムパラメータの入力を求められます。
.NETプロジェクトテンプレートを使用する準備が整いました。
このチュートリアルを通して、あなたはたくさんの興味深いことを学びました。
テンプレートのインストールとアンインストールにも使用して、以前よりも広範囲に使用する方法を学びました。標準の.NETプロジェクトを.NETCLIのプロジェクトテンプレートに変換する方法を発見しました。また、カスタムパラメータをサポートしてプロジェクトの作成をカスタマイズする方法についても説明しました。dotnet new
プロジェクトテンプレート用のNuGetパッケージを作成し、それを使用してテンプレートをVisualStudioと共有しました。また、プロジェクトテンプレートの構成を完了してVisualStudioで完全に使用できるようにする方法も学習しました。
リンク: https://auth0.com/blog/create-dotnet-project-template/
1637570640
.NETには、さまざまなコンテキストでアプリケーションをすばやくスキャフォールディングするのに役立ついくつかのプロジェクトテンプレートが付属しています。特定のコンテキストで独自のプロジェクトテンプレートを作成する必要がある場合があります。この記事では、.NETCLIおよびVisualStudioで使用する独自のプロジェクトテンプレートを作成する方法について説明します。
テンプレートは開発者の生産性を向上させ、ベストプラクティスの促進に役立つ可能性があります。.NET開発者には、コンソールアプリ、クラスライブラリ、単体テストプロジェクト、ASP.NET Coreアプリなど、新しいプロジェクトを開始したり、既存のプロジェクトに新しいアイテムを追加したりするための多くの組み込みテンプレートがあります。もちろん、あなたは、両方それらを使用することができますのVisual Studioとで.NET CLI。この記事では、プロジェクトテンプレート、つまり特定の機能を備えた新しいプロジェクトを作成できるテンプレートに焦点を当てます。
Visual Studioでは、[新規]メニュー項目を選択するだけでプロジェクトテンプレートリストを探索できますが、.NET CLIでは、コマンドを使用してテンプレートを操作できます。たとえば、次のコマンドを実行すると、マシンで使用可能なテンプレートのリストが表示されます。dotnet new
dotnet new --list
以下は、コンソールに表示されるテンプレートリストの例です。
したがって、たとえば、新しいコンソールアプリケーションを作成する場合は、上記のリストにあるテンプレートの短い名前を使用するコマンドを実行できます。あなたは見つけることができる公式ドキュメントから始まる内蔵されたテンプレートの説明を。dotnet new console
dotnet new
NuGetリポジトリまたは独自のマシンから他のテンプレートをインストールおよびアンインストールするなど、他の多くのテンプレート管理タスクでも役立ちます。この記事全体でそれを使用する方法を学びます。
作成するプロジェクトテンプレートは、認証にAuth0を使用するASP.NETWebアプリケーションテンプレートです。このテンプレートを使用すると、開発者はAuth0対応のスターターWebアプリケーションをすぐに実行できます。
実装するプロジェクトテンプレートには、.NET Core 3.1以降(.NET 5.0)が必要です。また、テンプレートは、バージョン16.8プレビュー以降のVisual Studio2019およびバージョン8.8以降のMac用VisualStudio2019でサポートされています。
プロジェクトテンプレートを作成する前に、いくつかのフォルダを作成して作業環境を準備しましょう。まず、ルートフォルダを作成します。次に、このフォルダーに移動して、2つのサブフォルダーを作成します:と。templates-playgroundtemplatestest
このプロセスの最後に、次のフォルダー構造を取得する必要があります。
templates-playground
├── templates
└── test
templates
フォルダは、プロジェクトテンプレートのソースコードが含まれます。そこに複数のテンプレートを配置できます。
このtest
フォルダーを使用して、そのプロジェクトテンプレートから新しいプロジェクトを作成します。
.NET Coreプロジェクトテンプレートは、次のもので構成されています。
プロジェクトのソースファイル
という名前の構成ファイル。template.json
この記事の目的上、テンプレートの基礎として機能する.NETプロジェクトを最初から構築することはしません。代わりに、既製のプロジェクトを使用します。
そのため、フォルダーに移動し、次のコマンドを使用してGitHubからプロジェクトのクローンを作成します。templates-playground/templates
cd templates-playground/templates
git clone \
-b starting-point \
https://github.com/auth0-blog/auth0-aspnet-webapp-project-template.git \
auth0-webapp
これらのコマンドは、フォルダーの下にサブフォルダーを作成し、そこにこのGitHubリポジトリのブランチのクローンを作成します。auth0-webapptemplates-playground/templatesstarting-point
前述のように、そのフォルダーにあるプロジェクトは、Auth0認証を使用するASP.NETWebアプリケーションです。このプロジェクトがどのように構築されたかについて詳しく知りたい場合は、「Auth0認証にC#拡張メソッドを使用する」の記事を参照してください。
次に、プロジェクトのルートフォルダー()内に名前を付けたサブフォルダーを作成します。次に、この新しく作成されたフォルダーに、次の内容の名前の新しいファイルを追加します。.template.configtemplates-playground/templates/auth0-webapptemplate.json
{
"$schema": "http://json.schemastore.org/template",
"author": "Andrea Chiarelli",
"classifications": [ "Web", "MVC", "Razor Pages" ],
"identity": "Auth0.NET.Mvc",
"name": "Auth0 ASP.NET Core App",
"shortName": "auth0webapp",
"tags": {
"language": "C#",
"type": "project"
}
}
このファイルは、テンプレートを作成するための重要なアイテムです。これには、.NETプロジェクトをプロジェクトテンプレートに変換するメタ情報が含まれています。上記の例では、最低限必要なプロパティが見つかります。
http://json.schemastore.org/template
dotnet new
type
C#(language
プロパティ)のプロジェクト(プロパティ)用であることを宣言します。使用可能な構成プロパティの完全なリストについては、このドキュメントを確認してください。
これまでに実行した簡単な手順で、作業中のプロジェクトテンプレートができました。フォルダ内で次のコマンドを実行して、ローカルにインストールしましょう。templates-playground/templates/auth0-webapp
dotnet new --install .
このコマンドを使用すると、.NETテンプレートエンジンは現在のフォルダ(.
)をテンプレートパッケージと見なすことができます。パッケージを作成する方法については、後で学習します。
テンプレートをインストールしたら、を実行します。次の図のように、既存のテンプレートの中に新しくインストールされたテンプレートが表示されます。dotnet new --list
素晴らしい!最初の.NETプロジェクトテンプレートを実行する準備ができました。
プロジェクトテンプレートの動作を確認するには、フォルダーに移動して次のコマンドを実行します。templates-playground/test
dotnet new auth0webapp -o myAuth0WebApp
myAuth0WebApp
ASP.NETプロジェクトのソースファイルを含むフォルダーを取得する必要があります。
実行の準備ができていることを確認するには、アプリケーションをAuth0に登録し、いくつかのパラメーターを使用して構成する必要があります。この手順により、アプリケーションユーザーはAuth0で認証できます。
これを行うには、Auth0アカウントが必要です。ここから無料でサインアップできます。
次に、Auth0ダッシュボードにアクセスし、[アプリケーション]セクションに移動し、次の手順に従ってアプリケーションをAuth0に登録します。
アプリケーションを作成したら、[設定]タブに移動し、Auth0ドメイン、クライアントID、およびクライアントシークレットをメモします。アプリケーションを構成し、Auth0と通信できるようにするには、これらの値が必要になります。
次に、値を[許可されたコールバックURL]フィールドに割り当て、値を[許可されたログアウトURL]フィールドに割り当てます。最初の値は、ユーザーが認証した後にコールバックするURLをAuth0に指示します。2番目の値は、ユーザーがログアウトした後にリダイレクトするURLをAuth0に指示します。https://localhost:5001/callbackhttps://localhost:5001/
最後に、[変更を保存]ボタンをクリックして適用します。
アプリケーションをAuth0に登録した後、ダッシュボードからいくつかのパラメーターを使用してアプリケーションを構成する必要があります。したがって、ASP.NETプロジェクトのルートフォルダーに移動して、ファイルを開きます。その内容は次のようになります。appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"Auth0": {
"Domain": "{DOMAIN}",
"ClientId": "{CLIENT_ID}",
"ClientSecret": "{CLIENT_SECRET}"
}
}
、、およびプレースホルダーをAuth0ダッシュボードの対応する値に置き換えて、ファイルを保存します。{DOMAIN}{CLIENT_ID}{CLIENT_SECRET}
クライアントシークレットをアプリケーションのパスワードと見なします。気をつけて、広めないでください。ここでは、サンプルアプリケーションがサーバー上で実行されることを意図しており、ユーザーがそれにアクセスできないため、クライアントシークレットをファイルに保存しています。
appsettings.json
これで、次のコマンドを実行してアプリケーションを起動できます。
dotnet run
アプリケーションが起動したら、ブラウザでhttps:// localhost:5001を指定します。次のページが表示されます。
ページの右上隅にある[ログイン]リンクをクリックすると、Auth0ユニバーサルログインページにリダイレクトされ、ユーザープロファイルページを認証してアクセスします。つまり、アプリケーションは、すべてのAuth0認証ロジックがすでに統合された状態で実行する準備ができています。
これまでのところ、作業中のプロジェクトテンプレートがありますが、元のプロジェクトのソースファイルを新しいフォルダーにコピーするだけなので、それほどエキサイティングには見えません。組み込みのテンプレートでできるように、新しいプロジェクトをカスタマイズしたいとします。
幸い、template.json構成ファイルを操作して、テンプレートジェネレーターのデフォルトの動作を変更できます。基本的な原則は、ユーザーがコマンドにオプションを渡すことでオーバーライドできるいくつかの設定を定義できることです。dotnet new <TEMPLATE_SHORT_NAME>
見てみましょう。
組み込みのテンプレートでコマンドを使用すると、新しいプロジェクトに割り当てる名前を指定できます。これにより、たとえば、アプリケーションに独自のグローバル名前空間を提供できます。通常、これはオプションを使用して実行できます。次のコマンドを実行するときに、このオプションを以前に使用したことがあります。dotnet new-o
dotnet new auth0webapp -o myAuth0WebApp
ただし、このコマンドmyAuth0WebApp
は、新しいプロジェクトを含むフォルダーを作成しました。ソースコードを見ると、グローバル名前空間が変更されていないことがわかります。
テンプレートを一般的な動作に準拠させるには、以下に示すように、構成ファイルにいくつかのプロパティを追加する必要があります。template.json
{
"$schema": "http://json.schemastore.org/template",
"author": "Andrea Chiarelli",
"classifications": [ "Web", "MVC", "Razor Pages" ],
"identity": "Auth0.NET.Mvc",
"name": "Auth0 ASP.NET Core App",
"shortName": "auth0webapp",
"sourceName": "Auth0.NET.Mvc",
"preferNameDirectory":true,
"tags": {
"language": "C#",
"type": "project"
}
}
sourceName
およびpreferNameDirectory
プロパティを追加しました。
sourceName
プロパティは、アプリケーションのグローバル名前空間でプロジェクトの名前を表します。このプロパティに、現在のアプリケーションの名前空間と一致する値を割り当てました。この値は、ユーザーが提供する場合、ユーザーからの値に置き換えられるプレースホルダーとしても機能します。Auth0.NET.Mvc
このpreferNameDirectory
パラメーターを使用すると、出力フォルダー名をプロジェクト名と一致させることができます。
これは、組み込みのプロジェクトテンプレートと同じ方法でカスタム名を指定することにより、新しいプロジェクトを作成できることを意味します。
変更したテンプレートをテストする前に、次のコマンドを使用してプロジェクトテンプレートをアンインストールします。
dotnet new -u <absolute_path_to_your_local_template>
カスタムパラメータを受け入れるようにプロジェクトテンプレートを構成することもできます。たとえば、Auth0テンプレートのユーザーが、新しいプロジェクトの作成中にAuth0構成パラメーターを提供できるようにすることができます。構成ファイルの内容を次のように置き換えましょう。template.json
{
"$schema": "http://json.schemastore.org/template",
"author": "Andrea Chiarelli",
"classifications": [ "Web", "MVC", "Razor Pages" ],
"identity": "Auth0.NET.Mvc",
"name": "Auth0 ASP.NET Core App",
"shortName": "auth0webapp",
"sourceName": "Auth0.NET.Mvc",
"preferNameDirectory":true,
"tags": {
"language": "C#",
"type": "project"
},
"symbols":{
"domain": {
"type": "parameter",
"description": "Your Auth0 domain.",
"defaultValue": "{DOMAIN}",
"replaces":"{DOMAIN}"
},
"clientId": {
"type": "parameter",
"description": "Your Auth0 client id.",
"defaultValue": "{CLIENT_ID}",
"replaces":"{CLIENT_ID}"
},
"clientSecret": {
"type": "parameter",
"description": "Your Auth0 client secret.",
"defaultValue": "{CLIENT_SECRET}",
"replaces":"{CLIENT_SECRET}"
}
}
}
追加したsymbol
3つのカスタムパラメータを定義するプロパティを、: 、domain
、。clientId
clientSecret
これらのパラメーターは、上記で学習したAuth0構成データを表します。
各パラメーターは、次の4つのプロパティで定義されます。
type
:これはシンボルのタイプを定義します(parameter
この場合はそうです)。description
:パラメータに割り当てる値の説明。defaultValue
:これは、ユーザーが何も割り当てない場合のパラメーターのデフォルト値です。replaces
:このプロパティは、プロジェクトテンプレートのソースコードのプレースホルダーを定義します。テンプレートエンジンはこのプレースホルダーを探し、ユーザーが指定した値に置き換えます。したがって、これらのパラメータをテストするには、プロジェクトテンプレートの現在インストールされているバージョンをアンインストールし、再インストールしてください。
cd templates-playground/templates/auth0-webapp
dotnet new -u <absolute_path_of_templates-playground/templates/auth0-webapp>
dotnet new -i .
テンプレートをインストールしたら、次のコマンドを実行して、使用可能なパラメーターを確認します。
dotnet new auth0webapp -h
の標準オプションとは別に、次の出力が表示されます。dotnet new
...
Auth0 ASP.NET Core App (C#)
Author: Andrea Chiarelli
Options:
-d|--domain Your Auth0 domain.
string - Optional
Default: {DOMAIN}
-c|--clientId Your Auth0 client id.
string - Optional
Default: {CLIENT_ID}
-cl|--clientSecret Your Auth0 client secret.
string - Optional
Default: {CLIENT_SECRET}
テンプレートで3つのカスタムパラメータを使用できるようにしました。短いバージョンが自動的に割り当てられていることに注意してください。
したがって、フォルダーに移動し、次のコマンドを入力して、この新機能をテストします。templates-playground/test
dotnet new auth0webapp \
-o mySecureWebApp \
-d <YOUR-AUTH0-DOMAIN> \
-c <YOUR-AUTH0-CLIENT-ID> \
-cl <YOUR-AUTH0-CLIENT-SECRET>
パラメータとして提供された値は、の一致するプレースホルダーを置き換えるため、アプリケーションを実行する準備が整います。appsettings.json
一般的な文字列パラメーターに加えて、限られた値のセットに制限されているパラメーターを構成できます。たとえば、ユーザーに新しいプロジェクトのターゲットフレームワークを選択させたい場合は、ファイルの内容を次のように変更する必要があります。template.json
{
"$schema": "http://json.schemastore.org/template",
"author": "Andrea Chiarelli",
"classifications": [ "Web", "MVC", "Razor Pages" ],
"identity": "Auth0.NET.Mvc",
"name": "Auth0 ASP.NET Core App",
"shortName": "auth0webapp",
"sourceName": "Auth0.NET.Mvc",
"preferNameDirectory": true,
"tags": {
"language": "C#",
"type": "project"
},
"symbols":{
"domain": {
"type": "parameter",
"description": "Your Auth0 domain.",
"defaultValue": "{DOMAIN}",
"replaces":"{DOMAIN}"
},
"clientId": {
"type": "parameter",
"description": "Your Auth0 client id.",
"defaultValue": "{CLIENT_ID}",
"replaces":"{CLIENT_ID}"
},
"clientSecret": {
"type": "parameter",
"description": "Your Auth0 client secret.",
"defaultValue": "{CLIENT_SECRET}",
"replaces":"{CLIENT_SECRET}"
},
"Framework": {
"type": "parameter",
"description": "The target framework for the project.",
"datatype": "choice",
"choices": [
{
"choice": "netcoreapp3.1",
"description": "Target .NET Core 3.1"
},
{
"choice": "net5.0",
"description": "Target .NET 5"
}
],
"defaultValue": "netcoreapp3.1",
"replaces": "netcoreapp3.1"
}
}
}
新しいパラメータ定義を追加しました:Framework
。実際には、これは組み込みパラメーターですが、制限された値を使用してカスタムパラメーターを定義するアプローチも同様に有効です。
パラメータの名前が大文字になっていることに注意してください。これは組み込みパラメーターであるため、この場合を維持する必要があります。そうしないと、VisualStudioでこのテンプレートを使用すると問題が発生する可能性があります。
すでに知っているパラメータのプロパティに加えて、さらに2つあります。
datatype
:choice
値を割り当てることにより、このプロパティは値の制限を有効にします。choices
:これは、パラメーターの有効な値の配列です。有効な値(choice
)とそのdescription
。の2つのプロパティを持つ各アイテム。上記のFramework
定義では、有効な値はとであり、前者がデフォルト値であると記載されています。この特定のケースでは、Frameworkパラメーターの有効な値が公式の.NETターゲットフレームワークと一致する必要があることを考慮してください。netcoreapp3.1net5.0
ここで、たとえば、auth0webapp
テンプレートから.NET 5.0をターゲットとする新しいプロジェクトを生成する場合は、次のコマンドを実行することでそれを実現できます。
dotnet new -auth0webapp -o MySecureWebApp -f net5.0
このサンプルプロジェクトでは、プロジェクトのコードは.NET3.1と.NET5.0の両方で同じままです。フレームワークによってコードが変更される場合は、プリプロセッサディレクティブを使用し
#if
てコードを適合させる必要がある場合があります。
これまで、.NETプロジェクトテンプレートを作業フォルダーからインストールするだけで、ローカルでテストしてきました。次に、NuGetパッケージを作成して配布したり、NuGetリポジトリに公開したりする方法を学習します。ちなみに、NuGetパッケージを作成することは、VisualStudioでテンプレートを使用するための前提条件です。
テンプレートのNuGetパッケージの作成は非常に簡単です。開始するには、フォルダに移動します。次に、次の内容で名前が付けられた新しいファイルを追加します。templates-playgroundTemplatePack.csproj
<!-- templates-playground/TemplatePack.csproj -->
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<PackageType>Template</PackageType>
<PackageVersion>1.0</PackageVersion>
<PackageId>Auth0.Templates</PackageId>
<Title>Auth0 Templates</Title>
<Authors>Andrea Chiarelli</Authors>
<Description>Template for creating an ASP.NET web application with Auth0 authentication.</Description>
<PackageTags>dotnet-new;templates;auth0</PackageTags>
<TargetFramework>netcoreapp3.1</TargetFramework>
<IncludeContentInPack>true</IncludeContentInPack>
<IncludeBuildOutput>false</IncludeBuildOutput>
<ContentTargetFolders>content</ContentTargetFolders>
<NoWarn>$(NoWarn);NU5128</NoWarn>
</PropertyGroup>
<ItemGroup>
<Content Include="templates\**\*" Exclude="templates\**\bin\**;templates\**\obj\**" />
<Compile Remove="**\*" />
</ItemGroup>
</Project>
ご覧のとおり、これはC#プロジェクトファイルです。ただし、コードをコンパイルしてアセンブリを生成するための設定が含まれているのではなく、NuGetパッケージを生成するための設定が含まれています。
ファイルのセクションには、パッケージのタイプ、タイトル、作成者など、パッケージを定義するいくつかの設定があります。特に、この設定はパッケージを識別し、すぐにわかるように、マシン上でパッケージを管理するために使用されます。この設定により、NuGetリポジトリでパッケージを分類するためのいくつかのタグを定義できます。<PropertyGroup><PackageId><PackageTags>
このセクションでは、考慮すべきファイル()とそれらに対して実行するアクション()について説明します。<ItemGroup><Content><Compile>
この設定では、フォルダーの下にあるすべてのファイルを含める必要があり、生成されたファイルをすべて除外する必要があることを指定しています。この設定により、実際にはコンパイルが防止されます。<Content>templates<Compile>
この例で作成しているパッケージにはプロジェクトテンプレートが1つだけ含まれていますが、テンプレートパッケージには1つのファイルに複数のテンプレートを含めることができます。
次に、ファイルの同じフォルダーで、次のコマンドを実行してNuGetパッケージを作成します。TemplatePack.csproj
dotnet pack
このコマンドは、フォルダー内に名前が付けられたパッケージを生成します。これは、公開する場合に、公式のNuGetリポジトリまたはその他のNuGetリポジトリインスタンスにアップロードする必要があるファイルです。Auth0.Templates.1.0.0.nupkgtemplates-playground/bin/Debug
パッケージをローカルでテストするにauth0webapp
は、マシンからテンプレートをアンインストールしたことを確認し、フォルダーで次のコマンドを実行します。templates-playground
dotnet new -i ./bin/Debug/Auth0.Templates.1.0.0.nupkg
それ以外の場合、NuGetパッケージをNuGetリポジトリにアップロードした場合は、次のコマンドを使用してインストールできます。
dotnet new -i Auth0.Templates
値はファイルからの設定の値であることに注意してください。インストール方法に関係なく、同じ識別子を使用してマシンからパッケージをアンインストールします。Auth0.Templates<PackageId>TemplatePack.csproj
dotnet new -u Auth0.Templates
.NETCLI用の機能するカスタマイズ可能なプロジェクトテンプレートを作成する手順を完了しました。ただし、プロジェクトテンプレートをVisual Studioでも使用できるようにするには、いくつかの追加の構成手順を適用する必要があります。
前に述べたように、でインストールされたテンプレートは、NuGetパッケージとしてインストールされたテンプレートのみを表示するVisualStudioには表示されません。これらのテンプレートをVisualStudioで表示するには、追加の手順を実行する必要があります。dotnet new -i
Windowsでは、[ツール] / [オプション]メニュー項目から[オプション]ダイアログを開きます。そのダイアログで、[環境/プレビュー機能]項目を選択し、次の図に示すように、[新しいプロジェクトにすべての.NETCoreテンプレートを表示する]チェックボックスをオンにします。
Visual Studio for Macでは、Visual Studio / [設定... ]メニュー項目から[設定]ダイアログを開く必要があります。そこで、次の図のように、[その他]項目の下の[プレビュー機能]を選択し、[新しいプロジェクトにすべての.NETCoreテンプレートを表示する]チェックボックスをオンにします。
テンプレートの可視性を有効にする方法の詳細については、このドキュメントを確認してください。
.NET CLIテンプレートの可視性を有効にすると、VisualStudioでテンプレートを使用できるようになります。ただし、さらにいくつかの調整を行わないと、ユーザーエクスペリエンスは最高になりません。たとえば、テンプレート構成をそのままにしておくと、VisualStudioのプロジェクト作成ダイアログにカスタムパラメーターが表示されなくなります。
このギャップを埋めるには、次のコンテンツを含むファイルをフォルダに追加する必要があります。ide.host.jsontemplates-playground/templates/auth0-webapp/template.config
{
"$schema": "http://json.schemastore.org/vs-2017.3.host",
"icon": "auth0.png",
"symbolInfo": [
{
"id": "domain",
"name": {
"text": "Auth0 Domain"
},
"isVisible": "true"
},
{
"id": "clientId",
"name": {
"text": "Auth0 Client Id"
},
"isVisible": "true"
},
{
"id": "clientSecret",
"name": {
"text": "Auth0 Client Secret"
},
"isVisible": "true"
}
]
}
このファイルは、VisualStudioに関連するデータを保持する役割を果たします。ide.host.json
それが基づいているスキーマへの参照に加えて、あなたはicon
プロパティに気付くかもしれません。このプロパティを使用すると、テンプレートリストでのテンプレートの外観をカスタマイズできます。提供されていない場合、デフォルトの汎用アイコンがプロジェクトテンプレートに関連付けられます。プロパティの値は、テンプレートアイコンとして使用する.png画像のファイル名です。ファイルはフォルダにあるはずです。.template.config
symbolInfo
プロパティは、Visual Studioのコンテキストでカスタムパラメータ情報を統合するアイテムの配列です。特に、id
プロパティはファイル内のシンボルアイテムと一致する必要があり、プロパティはそのシンボルに表示するラベルを定義します。最後に、プロパティはカスタムパラメータの可視性を有効にします。プロパティのデフォルト値はであるため、明示的に割り当てる必要があります。template.jsonname.textisVisibleisVisiblefalsetrue
お気づきかもしれませんがFramework
、ファイルでパラメータを指定する必要もありません。前述のように、パラメーターは特別なものであり、テンプレートエンジンはそれを自動的に認識します。ide.host.jsonFramework
これで、VisualStudioでプロジェクトテンプレートを使用する準備が整いました。いつものように、最初にフォルダに移動し、以前のバージョンのパッケージをアンインストールします。次に、新しいパッケージをビルドし、最後にインストールします。実行する必要のあるコマンドは次のとおりです。templates-playground
cd templates-playground
dotnet new -u Auth0.Templates
dotnet pack
dotnet new -i ./bin/Debug/Auth0.Templates.1.0.0.nupkg
この時点で、Visual Studioを起動し、新しいプロジェクトを作成します。使用可能なテンプレートのリストには、以下に示すように、Auth0 ASP.NET CoreAppテンプレートが含まれている必要があります。
プロジェクトテンプレートを選択すると、カスタムパラメータの入力を求められます。
.NETプロジェクトテンプレートを使用する準備が整いました。
このチュートリアルを通して、あなたはたくさんの興味深いことを学びました。
テンプレートのインストールとアンインストールにも使用して、以前よりも広範囲に使用する方法を学びました。標準の.NETプロジェクトを.NETCLIのプロジェクトテンプレートに変換する方法を発見しました。また、カスタムパラメータをサポートしてプロジェクトの作成をカスタマイズする方法についても説明しました。dotnet new
プロジェクトテンプレート用のNuGetパッケージを作成し、それを使用してテンプレートをVisualStudioと共有しました。また、プロジェクトテンプレートの構成を完了してVisualStudioで完全に使用できるようにする方法も学習しました。