Visual Studio:如何向项目添加代码模板

时间:2012-12-01 21:22:46

标签: c# visual-studio-2010

我想创建一个功能,允许我自动将一些相关文件添加到我的C#项目中。我想基于模板创建一个新表单,并创建一个XML文件并将其添加到项目中的单独子目录中。我该怎么做呢?我看到Visual Studio 2008中有可用的向导,加载项,宏等,但我不知道哪个最适合我的需求。我认为一个巫师会工作,但这可能是矫枉过正。我只是想从同一个项目中的现有文件集中删除复制的重复性。

1 个答案:

答案 0 :(得分:1)

您可以使用VS2010中的菜单文件|导出模板...将单个项目项目导出为压缩模板。要创建包含多个文件的模板,您可以导出第一个项目,然后将其他项目添加到生成的模板zip中。您还需要编辑zip中的.vstemplate文件以包含其他项目。

例如,我从现有项目导出表单,然后添加了一个xml文件。生成的zip文件包含文件

__ TemplateIcon.ico
Form1.cs的
Form1.Designer.cs
Form1.resx中
MyTemplate.vstemplate
xmldata.xml

.vstemplate文件包含以下xml:

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
  <TemplateData>
    <DefaultName>TwoFileTemplate</DefaultName>
    <Name>TwoFileTemplate</Name>
    <Description>Test template</Description>
    <ProjectType>CSharp</ProjectType>
    <SortOrder>10</SortOrder>
    <Icon>__TemplateIcon.ico</Icon>
  </TemplateData>
  <TemplateContent>
    <References />
    <ProjectItem SubType="" TargetFileName="xml\$fileinputname$.xml" ReplaceParameters="true">xmldata.xml</ProjectItem>
    <ProjectItem SubType="Form" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">Form1.cs</ProjectItem>
    <ProjectItem SubType="" TargetFileName="$fileinputname$.Designer.cs" ReplaceParameters="true">Form1.Designer.cs</ProjectItem>
    <ProjectItem SubType="" TargetFileName="$fileinputname$.resx" ReplaceParameters="true">Form1.resx</ProjectItem>
  </TemplateContent>
</VSTemplate>

更新zip文件后,将其移至文件夹.​​.. \ Visual Studio 2010 \ Templates \ ItemTemplates。

现在,新模板应显示在VS2010的“添加新项”对话框中。在将新项添加到项目时,它将使用您指定的任何名称添加表单和xml文件,并将xml文件放在名为“xml”的目录中。如果您想要一个或另一个文件的固定名称,可以使用所需名称替换.vstemplate文件中的$fileinputnam$

编辑 - 如果您需要表单或其他类文件的固定项目名称,则还需要打开代码模板并将$safeitemname$替换为所需名称。