自定义 项目模版

c#:
step1:replace the parameter which need user customize using $parameter$
 for example: In this baseline project we should customize the title and tiptext in resource file.so we user $...$

step2:export templete from  baseline project.

step3:create wizard project to implement the wizard winows .
ContractedBlock.gifExpandedBlockStart.gifCode
using System;
using System.Collections.Generic;
using Microsoft.VisualStudio.TemplateWizard;
using System.Windows.Forms;
using EnvDTE;

namespace CustomWizard
ExpandedBlockStart.gifContractedBlock.gif
{
    
public class IWizardImplementation:IWizard
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        
private UserInputForm inputForm;
        
private string customMessage;

        
// This method is called before opening any item that 
        
// has the OpenInEditor attribute.
        public void BeforeOpeningFile(ProjectItem projectItem)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
        }


        
public void ProjectFinishedGenerating(Project project)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
        }

        
        
// This method is only called for item templates,
        
// not for project templates.
        public void ProjectItemFinishedGenerating(ProjectItem 
            projectItem)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
        }


        
// This method is called after the project is created.
        public void RunFinished()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
        }


        
public void RunStarted(object automationObject,
            Dictionary
<stringstring> replacementsDictionary,
            WizardRunKind runKind, 
object[] customParams)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
try
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
// Display a form to the user. The form collects 
                
// input for the custom message.
                inputForm = new UserInputForm();
                inputForm.ShowDialog();

                
// Add custom parameters.
                 replacementsDictionary.Add("$DocPaneTipText$", WizardParameters.Instance.DocPaneTipText);
                        replacementsDictionary.Add(
"$DocPaneTitle$", WizardParameters.Instance.DocPaneTitle);            }

            
catch (Exception ex)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                MessageBox.Show(ex.ToString());
            }

        }


        
// This method is only called for item templates,
        
// not for project templates.
        public bool ShouldAddProjectItem(string filePath)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
return true;
        }
        
    }

}
 
step4:build the wizard project and put dll in GAC,then modify custom templeta .vstemplete file

ContractedBlock.gifExpandedBlockStart.gifCode

<VSTemplate Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
  
<TemplateData>
    
<Name>eCopy PaperWorks SDK Wizard</Name>
    
<Description>eCopy PaperWorks Connector Wizard</Description>
    
<ProjectType>CSharp</ProjectType>
    
<ProjectSubType>
    
</ProjectSubType>
    
<SortOrder>1000</SortOrder>
    
<CreateNewFolder>true</CreateNewFolder>
    
<DefaultName>PaperWorksConnector</DefaultName>
    
<ProvideDefaultName>true</ProvideDefaultName>
    
<LocationField>Enabled</LocationField>
    
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
    
<Icon>__TemplateIcon.ico</Icon>
  
</TemplateData>
  
<TemplateContent>
    
<Project TargetFileName="PaperWorksConnectorCS.csproj" File="PaperWorksConnectorCS.csproj" ReplaceParameters="true">
      
<ProjectItem ReplaceParameters="true" TargetFileName="ConnectorResource.resx">ConnectorResource.resx</ProjectItem>
      
<ProjectItem ReplaceParameters="true" TargetFileName="ConnectorResource.Designer.cs">ConnectorResource.Designer.cs</ProjectItem>
      
<!--<ProjectItem ReplaceParameters="true" TargetFileName="PaperWorksConnectorCS.cs">PaperWorksConnectorCS.cs</ProjectItem>
      
<ProjectItem ReplaceParameters="true" TargetFileName="PaperWorksStorageCS.cs">PaperWorksStorageCS.cs</ProjectItem>-->
      
<Folder Name="Properties" TargetFolderName="Properties">
        
<ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
        
<ProjectItem ReplaceParameters="false" TargetFileName="ConnectorCS.snk">ConnectorCS.snk</ProjectItem>
      
</Folder>
      
<Folder Name="ReferenceDll" TargetFolderName="ReferenceDll">
        
<ProjectItem ReplaceParameters="false" TargetFileName="connectors.dll">connectors.dll</ProjectItem>
        
<ProjectItem ReplaceParameters="false" TargetFileName="ecViewer.dll">ecViewer.dll</ProjectItem>
        
<ProjectItem ReplaceParameters="false" TargetFileName="IBridge.dll">IBridge.dll</ProjectItem>
      
</Folder>
      
<ProjectItem ReplaceParameters="true" TargetFileName="RegistryOperation.cs">RegistryOperation.cs</ProjectItem>
      
<Folder Name="Resources" TargetFolderName="Resources">
        
<ProjectItem ReplaceParameters="false" TargetFileName="ButtonIcon.ico">ButtonIcon.ico</ProjectItem>
        
<ProjectItem ReplaceParameters="false" TargetFileName="Open.ico">Open.ico</ProjectItem>
        
<ProjectItem ReplaceParameters="false" TargetFileName="Project.ico">Project.ico</ProjectItem>
        
<ProjectItem ReplaceParameters="false" TargetFileName="Save.ico">Save.ico</ProjectItem>
      
</Folder>
      
<ProjectItem ReplaceParameters="true" TargetFileName="Win32Api.cs">Win32Api.cs</ProjectItem>
    
</Project>
  
</TemplateContent>
  
<WizardExtension>
    
<Assembly>
      CustomWizard, Version
=1.0.0.0, Culture=Neutral, PublicKeyToken=069e425962c50a4e
    
</Assembly>
    
<FullClassName>CustomWizard.IWizardImplementation</FullClassName>
  
</WizardExtension>
</VSTemplate>

转载于:https://www.cnblogs.com/JessieDong/archive/2009/10/09/1553154.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值