单击菜单添加项目时如何添加基于特定模板的项目?

时间:2019-08-01 12:28:00

标签: c# .net winforms visual-studio-2017

我想创建一个模板(例如,在文件夹中创建一个文件夹,使用该文件夹的名称创建1类和1个接口),然后通过右键单击该项目并在菜单中将其创建CreateTamplateClass

我可以使用c#WinForms /控制台应用程序和更多..

TNX

1 个答案:

答案 0 :(得分:1)

具有带有参数替换文件夹的Visual Studio多文件项目模板

您可以创建 C#项目模板项目,也可以自己手动创建项目模板zip文件。

项目模板zip文件应包含以下文件:

  • Class.cs
  • Interface.cs
  • MyItemTemplate.vstemplate

然后,您需要将zip文件复制到以下文件夹:

  • %USERPROFILE%\Documents\Visual Studio 2017\Templates\ItemTemplates\Visual C#

然后打开一个新的Visual Studio实例并创建/打开一个C#项目,然后打开添加新项窗口,然后从 Visual C#项中选择 MyItemTemplate < / em>并命名为 MyItem1 之类的名称,则将创建以下结构:

Visual Studio multi-file Item Template having Folder

以下是zip文件中模板文件的内容:

Class.cs

using System;
using System.Collections.Generic;

namespace $rootnamespace$.$basename$
{
    class $safeitemrootname$: I$safeitemrootname$
    {
    }
}

Interface.cs

using System;
using System.Collections.Generic;

namespace $rootnamespace$.$basename$
{
    interface $safeitemrootname$
    {
    }
}

MyItemTemplate.vstemplate

<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="3.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" xmlns:sdk="http://schemas.microsoft.com/developer/vstemplate-sdkextension/2010">
  <TemplateData>
    <Name>MyItemTemplate</Name>
    <Description>My multi-file item template</Description>
    <Icon>MyItemTemplate.ico</Icon>
    <TemplateID>52ae3bdb-7fde-4d47-8a4b-d17d0c9269f7</TemplateID>
    <ProjectType>CSharp</ProjectType>
    <DefaultName>MyItem.cs</DefaultName>
  </TemplateData>
  <TemplateContent>
    <References>
      <Reference>
        <Assembly>System</Assembly>
      </Reference>
    </References>
    <ProjectItem TargetFileName="$fileinputname$\I$fileinputname$.cs" ReplaceParameters="true">Interface.cs</ProjectItem>
    <ProjectItem TargetFileName="$fileinputname$\$fileinputname$.cs" ReplaceParameters="true">Class.cs</ProjectItem>
    <CustomParameters>
      <CustomParameter Name="$basename$" Value="$fileinputname$"/>
    </CustomParameters>    
  </TemplateContent>
</VSTemplate>