zoukankan      html  css  js  c++  java
  • 自定义vs 项模板(ItemTemplate)

     摘自:http://www.cnblogs.com/forrestsun/articles/198536.html

    一、如何创建项模板?
    创建一个项模板需要完成以下几步:
    a、创建项模板的VSDIR文件 [ VSDIR文件的描述可以参见 http://msdn.microsoft.com/library/chs/default.asp?url=/library/chs/vsintro7/html/vxconvsdirfiles.asp ]
    b、创建VSZ文件(项目控件)[ VSZ文件的描述可以参见http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vccore/html/vclrfunderstandingprojectcontrolfiles.asp ]
    c、定制javascripts
    d、创建文件模板

    第一步:

    创建VSDIR文件
    --------------------------------------------------------------------------------
    -打开文件夹<Program Files>\Microsoft Visual Studio .NET 2003\VC#\CSharpProjectItems\LocalProjectItems\Code
    打开code.vsdir文件,并在其中添加如下内容:
    ..\..\CSharpAddSingletonClassWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|Singleton类|11|Singleton类|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4515|0|SingletonClass.cs
    * 注意:
    以上内容不要换行。这个文件格式定义见VSDIR文件描述。
    其中CSharpAddSingletonClassWiz.vsz是指所使用的vsz文件(项目控件)的位置。
    如后面的图中显示的,添加此内容后Singleton类模板将出现在“本地项目项”的“代码”分支下。如果需要在“本地项目项”下也显示此“Singleton类”模板,则需要在<Program Files>\Microsoft Visual Studio .NET 2003\VC#\CSharpProjectItems\LocalProjectItems目录下的LocalProjectItems.vsdir文件中添加:..\CSharpAddSingletonClassWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|Singleton类|11|Singleton类|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4515|0|SingletonClass.cs

    第二步:

    创建VSZ文件
    --------------------------------------------------------------------------------
    -打开文件夹<Program Files>\Microsoft Visual Studio .NET 2003\VC#\CSharpProjectItems
    创建文件CSharpAddSingletonClassWiz.vsz,在其中添加如下内容:
    VSWIZARD 7.0
    Wizard=VsWizard.VsWizardEngine.7.1
    Param="WIZARD_NAME = CSharpAddSingletonClassWiz"
    Param="WIZARD_UI = FALSE"
    Param="PROJECT_TYPE = CSPROJ"
    *注意:VSZ文件格式定义见VSZ文件描述
    其中比较重要的是Param="WIZARD_NAME = CSharpAddSingletonClassWiz",这里“CSharpAddSingletonClassWiz”是指定了当创建Singleton类时使用的向导名称。

    第三步:

     定制javascripts

    --------------------------------------------------------------------------------
    打开目录<Program Files>\Microsoft Visual Studio .NET 2003\VC#\VC#Wizards
    新建一个名为CSharpAddSingletonClassWiz的目录,这个名称是和Param="WIZARD_NAME = CSharpAddSingletonClassWiz"中WIZARD_NAME对应的。
    打开这个目录,创建目录Scripts,然后再在Scripts下创建目录1033。然后创建default.js文件。在其中放置如下代码:
    function OnFinish(selProj, selObj)
    {
    var oldSuppressUIValue = true;
    try
    {
    var strTarget = wizard.FindSymbol("ITEM_NAME");
    var strClassName = strTarget.split(".");
    var bValid = wizard.ValidateCLRIdentifier(strClassName[0]);
    if (!bValid)
    {
    wizard.ReportError();
    return VS_E_WIZARDBACKBUTTONPRESS;
    }
    oldSuppressUIValue = dte.SuppressUI;
    var strProjectName = wizard.FindSymbol("PROJECT_NAME");
    var strSafeProjectName = CreateSafeName(strProjectName);
    wizard.AddSymbol("SAFE_PROJECT_NAME", strSafeProjectName);
    SetTargetFullPath(selObj);
    var strProjectPath = wizard.FindSymbol("TARGET_FULLPATH");
    var strTemplatePath = wizard.FindSymbol("TEMPLATES_PATH");

    var strTpl = "";
    var strName = "";
    var InfFile = CreateInfFile();

    AddReferencesForClass(selProj);
    AddFilesToCSharpProject(selObj, strProjectName, strProjectPath, InfFile, true);
    }
    catch(e)
    {
    if( e.description.length > 0 )
    SetErrorInfo(e);
    return e.number;
    }
    finally
    {
    dte.SuppressUI = oldSuppressUIValue;
    if( InfFile )
    InfFile.Delete();
    }
    }

    function SetFileProperties(oFileItem, strFileName)
    {
    }
    *注意: 在这个JS文件中出现的方法调用可以在路径<Program Files>\Microsoft Visual Studio .NET 2003\VC#\VC#Wizards\2052下的common.js中找到,其中有比较清楚的注释说明。


    第四步:

     创建文件模板

    --------------------------------------------------------------------------------
    转到路径:<Program Files>\Microsoft Visual Studio .NET 2003\VC#\VC#Wizards\CSharpAddSingletonClassWiz,创建目录Templates,再在Templates目录下创建目录1033。目录创建完毕后添加文件Templates.inf,内容是:File1.cs(这个File1.cs是指我们所使用的文件模板名称)。随后创建文件File1.cs,根据前面给出Singleton模式示例的格式添加以下代码:
    namespace [!output SAFE_NAMESPACE_NAME]
    {
    using System;
    /**//// <summary>
    /// [!output SAFE_CLASS_NAME].
    /// </summary>
    class [!output SAFE_CLASS_NAME]
    {
    成员#region 成员
    private static [!output SAFE_CLASS_NAME] m_instance;

    #endregion
    构造函数#region 构造函数

    private [!output SAFE_CLASS_NAME]()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }

    public static [!output SAFE_CLASS_NAME] GetInstance()
    {
    if( m_instance == null )
    {
    m_instance = new [!output SAFE_CLASS_NAME]();
    }
    retrun m_instance;
    }

    #endregion
    }
    }

    好了。通过以上的步骤就完成了一个项模板的定制。
    当我们再打开一个项目,选择“添加新项”时,会发现在本地项目项中多了一个"Singleton类"的模板。如图:


    同时在“本地项目项”的分支“代码”中也可以看到“Singleton类”模板。
    当选定打开后并查看代码,可以发现所创建的类实现前面说描述的Singleton模式。

    OK。至此,如何来自定义项模板就基本清楚了。进而通过这种方式,我们可以尝试自定义项模板的集合,例如可以把常用的一些模式实现作成项模板,这样无疑会对开发效率的提高有所帮助! 

  • 相关阅读:
    CodeForces 1294B Collecting Packages(排序+贪心)
    计算系数(组合数)
    垒骰子(矩阵快速幂)
    蒜头君倒水(矩阵快速幂)
    Buy Tickets POJ
    Billboard HDU
    树状数组求逆序对 附HDU1394
    codeforces 1304D Shortest and Longest LIS
    codeforces 1301C Ayoub's function
    Codeforces 1301B Motarack's Birthday(二分)
  • 原文地址:https://www.cnblogs.com/huanhuan86/p/2740896.html
Copyright © 2011-2022 走看看