项模板: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; }
        }
    }
}
二. 选择项目 -> 导出模板

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

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

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

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

针对不同项目,模板可能不适配,为兼容不同模板,需要添加 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>