Package and deploy custom My extensions (Visual Basic)
Visual Basic provides an easy way for you to deploy your custom
My namespace extensions by using Visual Studio templates. If you are creating a project template for which your
My extensions are an integral part of the new project type, you can just include your custom
My extension code with the project when you export the template. For more information about exporting project templates, see How to: Create Project Templates.
If your custom
My extension is in a single code file, you can export the file as an item template that users can add to any type of Visual Basic project. You can then customize the item template to enable additional capabilities and behavior for your custom
My extension in a Visual Basic project. Those capabilities include the following:
Allowing users to manage your custom
Myextension from the My Extensions page of the Visual Basic Project Designer.
Automatically adding your custom
Myextension when a reference to a specified assembly is added to a project.
Myextension item template in the Add Item dialog box so that it is not included in the list of project items.
This topic discusses how to package a custom
My extension as a hidden item template that can be managed from the My Extensions page of the Visual Basic Project Designer. The custom
My extension can also be added automatically when a reference to a specified assembly is added to a project.
Create a My namespace extension
The first step in creating a deployment package for a custom
My extension is to create the extension as a single code file. For details and guidance about how to create a custom
My extension, see Extending the My Namespace in Visual Basic.
Export a My namespace extension as an item template
After you have a code file that includes your
My namespace extension, you can export the code file as a Visual Studio item template. For instructions on how to export a file as a Visual Studio item template, see How to: Create Item Templates.
My namespace extension has a dependency on a particular assembly, you can customize your item template to automatically install your
My namespace extension when a reference to that assembly is added. As a result, you will want to exclude that assembly reference when you export the code file as a Visual Studio item template.
Customize the item template
You can enable your item template to be managed from the My Extensions page of the Visual Basic Project Designer. You can also enable the item template to be added automatically when a reference to a specified assembly is added to a project. To enable these customizations, you will add a new file, called the CustomData file, to your template, and then add a new element to the XML in your .vstemplate file.
Add the CustomData file
The CustomData file is a text file that has a file name extension of .CustomData (the file name can be set to any value meaningful to your template) and that contains XML. The XML in the CustomData file instructs Visual Basic to include your
My extension when users use the My Extensions page of the Visual Basic Project Designer. You can optionally add the <
AssemblyFullName> attribute to your CustomData file XML. This instructs Visual Basic to automatically install your custom
My extension when a reference to a particular assembly is added to the project. You can use any text editor or XML editor to create the CustomData file, and then add it to your item template's compressed folder (.zip file).
For example, the following XML shows the contents of a CustomData file that will add the template item to the My Extensions folder of a Visual Basic project when a reference to the Microsoft.VisualBasic.PowerPacks.Vs.dll assembly is added to the project.
<VBMyExtensionTemplate ID="Microsoft.VisualBasic.Samples.MyExtensions.MyPrinterInfo" Version="22.214.171.124" AssemblyFullName="Microsoft.VisualBasic.PowerPacks.vs" />
The CustomData file contains a <
VBMyExtensionTemplate> element that has attributes as listed in the following table.
||Required. A unique identifier for the extension. If the extension that has this ID has already been added to the project, the user will not be prompted to add it again.|
||Required. A version number for the item template.|
||Optional. An assembly name. When a reference to this assembly is added to the project, the user will be prompted to add the
Add the <CustomDataSignature> element to the .vstemplate file
To identify your Visual Studio item template as a
My namespace extension, you must also modify the .vstemplate file for your item template. You must add a
<CustomDataSignature> element to the
<TemplateData> element. The
<CustomDataSignature> element must contain the text
Microsoft.VisualBasic.MyExtension, as shown in the following example.
You cannot modify files in a compressed folder (.zip file) directly. You must copy the .vstemplate file from the compressed folder, modify it, and then replace the .vstemplate file in the compressed folder with your updated copy.
The following example shows the contents of a .vstemplate file that has the
<CustomDataSignature> element added.
<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>
Install the template
To install the template, you can copy the compressed folder (.zip file) to the Visual Basic item templates folder. By default, user item templates are located in %USERPROFILE%\Documents\Visual Studio <Version>\Templates\ItemTemplates\Visual Basic. Alternatively, you can publish the template as a Visual Studio Installer (.vsi) file.