Visual Basic では、Visual Studio テンプレートを使用してカスタム My
名前空間拡張機能を簡単にデプロイできます。
My
拡張機能が新しいプロジェクトの種類の不可欠な部分であるプロジェクト テンプレートを作成する場合は、テンプレートをエクスポートするときに、カスタム My
拡張機能コードをプロジェクトに含めることができます。 プロジェクト テンプレートのエクスポートの詳細については、「 方法: プロジェクト テンプレートを作成する」を参照してください。
カスタム My
拡張機能が 1 つのコード ファイル内にある場合は、ユーザーが任意の種類の Visual Basic プロジェクトに追加できる項目テンプレートとしてファイルをエクスポートできます。 その後、項目テンプレートをカスタマイズして、Visual Basic プロジェクトのカスタム My
拡張機能に対して追加の機能と動作を有効にすることができます。 これらの機能には、次のものが含まれます。
Visual Basic プロジェクト デザイナーの [個人用拡張機能] ページからカスタム
My
拡張機能を管理できるようにします。指定したアセンブリへの参照がプロジェクトに追加されたときに、カスタム
My
拡張機能を自動的に追加します。My
拡張項目テンプレートを [項目の追加] ダイアログ ボックスで非表示にして、プロジェクト項目の一覧に含めないようにします。
このトピックでは、Visual Basic プロジェクト デザイナーの [個人用拡張機能] ページから管理できる非表示の項目テンプレートとしてカスタム My
拡張機能をパッケージ化する方法について説明します。 指定したアセンブリへの参照がプロジェクトに追加されたときに、カスタム My
拡張機能を自動的に追加することもできます。
My 名前空間拡張機能を作成する
カスタム My
拡張機能の展開パッケージを作成する最初の手順は、拡張機能を 1 つのコード ファイルとして作成することです。 カスタム My
拡張機能を作成する方法の詳細とガイダンスについては、「 Visual Basic でのマイ名前空間の拡張」を参照してください。
My 名前空間拡張機能を項目テンプレートとしてエクスポートする
My
名前空間拡張機能を含むコード ファイルを作成したら、コード ファイルを Visual Studio 項目テンプレートとしてエクスポートできます。 Visual Studio 項目テンプレートとしてファイルをエクスポートする方法については、「 方法: 項目テンプレートを作成する」を参照してください。
注
My
名前空間拡張機能が特定のアセンブリに依存している場合は、そのアセンブリへの参照が追加されたときに、My
名前空間拡張機能を自動的にインストールするように項目テンプレートをカスタマイズできます。 その結果、コード ファイルを Visual Studio 項目テンプレートとしてエクスポートするときに、そのアセンブリ参照を除外する必要があります。
項目テンプレートをカスタマイズする
項目テンプレートを管理できるようにするには、Visual Basic プロジェクト デザイナーの [ 個人用拡張機能 ] ページを使用します。 指定したアセンブリへの参照がプロジェクトに追加されたときに、項目テンプレートを自動的に追加することもできます。 これらのカスタマイズを有効にするには、CustomData ファイルと呼ばれる新しいファイルをテンプレートに追加し、.vstemplate ファイルの XML に新しい要素を追加します。
CustomData ファイルを追加する
CustomData ファイルは、ファイル名拡張子が .CustomData (ファイル名はテンプレートにとって意味のある任意の値に設定できます)、XML を含みます。 CustomData ファイル内の XML は、ユーザーが Visual Basic プロジェクト デザイナーの [個人用拡張機能] ページを使用するときに、My
拡張機能を含むように Visual Basic に指示します。 必要に応じて、 <AssemblyFullName>
属性を CustomData ファイル XML に追加できます。 これにより、特定のアセンブリへの参照がプロジェクトに追加されたときに、カスタム My
拡張機能を自動的にインストールするように Visual Basic に指示されます。 任意のテキスト エディターまたは XML エディターを使用して CustomData ファイルを作成し、アイテム テンプレートの圧縮フォルダー (.zip ファイル) に追加できます。
たとえば、次の XML は、Microsoft.VisualBasic.PowerPacks.Vs.dll アセンブリへの参照がプロジェクトに追加されたときに、Visual Basic プロジェクトの My Extensions フォルダーにテンプレート 項目を追加する CustomData ファイルの内容を示しています。
<VBMyExtensionTemplate
ID="Microsoft.VisualBasic.Samples.MyExtensions.MyPrinterInfo"
Version="1.0.0.0"
AssemblyFullName="Microsoft.VisualBasic.PowerPacks.vs"
/>
CustomData ファイルには、次の表に示すように属性を持つ <VBMyExtensionTemplate>
要素が含まれています。
特性 | 説明 |
---|---|
ID |
必須。 拡張機能の一意識別子。 この ID を持つ拡張機能が既にプロジェクトに追加されている場合、ユーザーはもう一度追加するように求めされません。 |
Version |
必須。 項目テンプレートのバージョン番号。 |
AssemblyFullName |
任意。 アセンブリ名。 このアセンブリへの参照がプロジェクトに追加されると、ユーザーは、この項目テンプレートから My 拡張機能を追加するように求められます。 |
<CustomDataSignature> 要素を .vstemplate ファイルに追加します。
Visual Studio 項目テンプレートを My
名前空間拡張機能として識別するには、項目テンプレートの .vstemplate ファイルも変更する必要があります。
<TemplateData>
要素に<CustomDataSignature>
要素を追加する必要があります。 次の例に示すように、 <CustomDataSignature>
要素にはテキスト Microsoft.VisualBasic.MyExtension
が含まれている必要があります。
<CustomDataSignature>Microsoft.VisualBasic.MyExtension</CustomDataSignature>
圧縮フォルダー (.zip ファイル) 内のファイルを直接変更することはできません。 .vstemplate ファイルを圧縮フォルダーからコピーし、変更してから、圧縮フォルダー内の .vstemplate ファイルを更新されたコピーに置き換える必要があります。
次の例は、 <CustomDataSignature>
要素が追加された .vstemplate ファイルの内容を示しています。
<VSTemplate Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
<TemplateData>
<DefaultName>MyCustomExtensionModule.vb</DefaultName>
<Name>MyPrinterInfo</Name>
<Description>Custom My Extensions Item Template</Description>
<ProjectType>VisualBasic</ProjectType>
<SortOrder>10</SortOrder>
<Icon>__TemplateIcon.ico</Icon>
<CustomDataSignature >Microsoft.VisualBasic.MyExtension</CustomDataSignature>
</TemplateData>
<TemplateContent>
<References />
<ProjectItem SubType="Code"
TargetFileName="$fileinputname$.vb"
ReplaceParameters="true"
>MyCustomExtensionModule.vb</ProjectItem>
</TemplateContent>
</VSTemplate>
テンプレートをインストールする
テンプレートをインストールするには、圧縮フォルダー (.zip ファイル) を Visual Basic 項目テンプレート フォルダーにコピーします。 既定では、ユーザー項目テンプレートは %USERPROFILE%\Documents\Visual Studio <Version>\Templates\ItemTemplates\Visual Basic にあります。 または、テンプレートを Visual Studio インストーラー (.vsi) ファイルとして発行することもできます。
こちらも参照ください
.NET