Desenvolvimento - Visual Basic .NET

Como Criar Project Templates Item Em Vb.Net - parte 2

Devido a falta de documentação referente a este assunto, decidi escrever este artigo para ajudar aqueles que necessitam criar templates em VB.NET.

por Thiago Fernandes Custódio



Criando um novo Project Template Item

Project Template Item : No nosso projeto Template Application Temos um form, uma classe, um Assemblyinfo.vb

Durante o desenvolvimento do projeto, uma necessidade de adicionar mais forms ou classes customizadas pode surgir. Para isto, devemos ter arquivos do tipo .vsz para indicar aonde estão nosso form e nossa classe com o template desejado.




..\..\TemplateForm.vsz|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|TemplateForm|10|Template Form|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|4527| |TemplateForm.vb

..\..\TemplateClass.vsz|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|TemplateClass|20|Template Class|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|4510| |TemplateClass.vb

..\TemplateForm.vsz|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|TemplateForm|10|Template Form|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|4527| |TemplateForm.vb

..\TemplateClass.vsz|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|TemplateClass|20|Template Class|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|4510| |TemplateClass.vb


VSWIZARD 6.0
Wizard=VsWizard.VsWizardEngine.7.1
Param="WIZARD_NAME = TemplateFormWiz"
Param="WIZARD_UI = FALSE"
Param="PROJECT_TYPE = VBPROJ"

**Obs: Caso esteja usando o Microsoft Visual Studio .NET 2002 , retire o seguinte trecho :

.7.1

deixando o arquivo da seguinte forma:

VSWIZARD 6.0
Wizard=VsWizard.VsWizardEngine
Param="WIZARD_NAME = TemplateFormWiz"
Param="WIZARD_UI = FALSE"
Param="PROJECT_TYPE = VBPROJ"

VSWIZARD 6.0
Wizard=VsWizard.VsWizardEngine.7.1
Param="WIZARD_NAME = TemplateClassWiz"
Param="WIZARD_UI = FALSE"
Param="PROJECT_TYPE = VBPROJ"

**Obs: Caso esteja usando o Microsoft Visual Studio .NET 2002 , retire o seguinte trecho :

.7.1

deixando o arquivo da seguinte forma:

VSWIZARD 6.0
Wizard=VsWizard.VsWizardEngine
Param="WIZARD_NAME = TemplateClassWiz"
Param="WIZARD_UI = FALSE"
Param="PROJECT_TYPE = VBPROJ"


Templates

Scripts

\Microsoft Visual Studio .NET 2003\Vb7\VBWizards\TemplateClassWiz\Templates\1033

\Microsoft Visual Studio .NET 2003\Vb7\VBWizards\TemplateClassWiz\Scripts\1033

Dentro da pasta TemplateClassWiz crie outras duas pastas :

Templates

Scripts

e para cada pasta crie subpastas com o nome de 1033 :

\Microsoft Visual Studio .NET 2003\Vb7\VBWizards\TemplateFormWiz\Templates\1033

\Microsoft Visual Studio .NET 2003\Vb7\VBWizards\TemplateFormWiz\Scripts\1033




altere de:

strTemplateFile = strTemplatePath + "\\AssemblyInfo.vb";
item = AddFileToVSProject("AssemblyInfo.vb", project, project.ProjectItems, strTemplateFile, false);

para (Assemblyinfo.vb para Class.vb e Assemplyinfo.vb para Class1.vb):

strTemplateFile = strTemplatePath + "\\Class.vb";
item = AddFileToVSProject("Class1.vb", project, project.ProjectItems, strTemplateFile, false);

Note que na segunda linha, Ao invés de simplesmente Class, ela passou para Class1 , pois Class é uma palavra reservada.



O Arquivo default.js copiado tem a seguinte estrutura :

//
// Copyright (c) Microsoft Corporation 2001-2002. All rights reserved.
//

function OnFinish(selProj, selObj)
{
var oldSuppressUIValue = true;
try
{
oldSuppressUIValue = dte.SuppressUI;
var bSilent = wizard.FindSymbol("SILENT_WIZARD");
dte.SuppressUI = bSilent;

var strItemName = wizard.FindSymbol("ITEM_NAME");
var strTemplatePath = wizard.FindSymbol("TEMPLATES_PATH");
var strTemplateFile = strTemplatePath + "\\Dataset.xsd";

var item = AddFileToVSProject(strItemName, selProj, selObj, strTemplateFile, false);
if( item )
{
item.Properties("CustomTool").Value = "MSDataSetGenerator";
var editor = item.Open(vsViewKindPrimary);
editor.Visible = true;
}

return 0;
}
catch(e)
{
switch(e.number)
{
case -2147221492 /* OLE_E_PROMPTSAVECANCELLED */ :
return -2147221492;

case -2147024816 /* FILE_ALREADY_EXISTS */ :
case -2147213313 /* VS_E_WIZARDBACKBUTTONPRESS */ :
return -2147213313;

default:
ReportError(e.description);
return -2147213313;
}
}
finally
{
dte.SuppressUI = oldSuppressUIValue;
}
}

edite a linha :

var strTemplateFile = strTemplatePath + "\\Dataset.xsd";

e troque de "\\Dataset.xsd"; para "\\Form.vb" <-- No caso de estar editando o default.js da pasta \Microsoft Visual Studio .NET 2003\Vb7\VBWizards\TemplateFormWiz\Scripts\1033\

ou para

"\\Class.vb" <-- No caso de estar editando o default.js da pasta \Microsoft Visual Studio .NET 2003\Vb7\VBWizards\TemplateClassWiz\Scripts\1033\


Dúvidas ou Sugestões: tcustodio@gpnet.com.br

Thiago Fernandes Custódio

Thiago Fernandes Custódio - Gennari & Peartree Projetos e Sistemas S/C Ltda.
DIV 29 - Centro de Desenvolvimento
Programador