项模板:https://learn.microsoft.com/zh-cn/visualstudio/ide/how-to-create-item-templates?view=vs-2022

变量参数:https://learn.microsoft.com/zh-cn/visualstudio/ide/template-parameters?view=vs-2022

一. 在项目中创建代码脚本

/*
 * @author: $username$ $time$
 */

namespace $rootnamespace$
{
    /// <summary>
    /// 
    /// </summary>
    public class $safeitemrootname$
    {
        ///<inheritdoc/>
        public class Query : IQuery<Result>
        {
            // 请求参数:属性
            //[JsonPropertyName("user_id")]
            //public long UserId {  get; set; }
        }

        ///<inheritdoc/>
        public class Querier : Querier<Query, Result>
        {
            //private readonly TenantInfoContext _tenant;
            //private readonly SysUserGrpc.SysUserGrpcClient _sysUserGrpc;
            //private readonly UserInfoContext _userInfoContext;
            //private readonly IEFRepository<A> repository;

            ///<inheritdoc/>
            public Querier()
            {
                //初始化
            }

            ///<inheritdoc/>
            public override async Task<Result> Handle(Query query, CancellationToken cancellationToken)
            {
                throw new Exception("补充业务代码");
            }
        }


        /// <summary>
        /// 结果集
        /// </summary>
        public class Result
        {
            // 响应参数:属性
            //[JsonIgnore]
            //[JsonPropertyName("user_id")]
            //public long UserId {  get; set; }
        }
    }
}

二. 选择项目 -> 导出模板

项目导出模板.png

三. 选择项模板,指定到项模板

项模板.png

四. 点击下一步,选中创建的代码文件,下一步

项模板.png

  1. 设置模板名称、说明、图像,点击完成

模板配置.png

  1. 完成后,会打开导出的文件,将zip文件复制到 %USERPROFILE%\Documents\Visual Studio <version>\Templates\ItemTemplates,重启VS
  2. 新建项目,即可查看模板

模板示例.png

  1. 针对不同项目,模板可能不适配,为兼容不同模板,需要添加 TemplateID

    <VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
      <TemplateData>
        <DefaultName>Querier.cs</DefaultName>
        <Name>Querier</Name>
        <Description>Querier生成模板</Description>
        <ProjectType>CSharp</ProjectType>
        <SortOrder>10</SortOrder>
        <TemplateGroupID>AspNetCore</TemplateGroupID>
        <Icon>__TemplateIcon.png</Icon>
        <PreviewImage>__PreviewImage.png</PreviewImage>
      </TemplateData>
      <TemplateContent>
        <References />
        <ProjectItem SubType="" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">Querier1.cs</ProjectItem>
      </TemplateContent>
    </VSTemplate>