生产力提升! 自己动手自定义Visual Studio 2019的 类创建模板,制作简易版Vsix安装包...

序言

最近一直在开发 webApi 接口,为了方便我采用了反Restful风格开发,90%的接口均采用post方式,小部分查询采用Get方式,接口的入参和出参定义每次都需要手动创建2个类,心不累手累,怎么能减轻点工作,提升编程体验,早点下班呢?

1、visual studio 扩展

大家应该都安装过 扩展吧,就是这个东东。

是的,本次我们就开始一个自己的扩展开发。

别担心,这个扩展非常简单,不要担心会占用你太多时间。

2、建立vs扩展项目

  1. 新建一个项目,过滤最右边的项目类型为 扩展。

2. 使用c#开发,就选第一个。
3. 好了,不用写代码哦,回头我们再配置,继续

2、建立自己的项模板项目

新建一个项目,选择 c# Item Template,见下图。

点击class.cs,增加如下代码,里面有定义好的宏,所见即可知。

/*----------------------------------------------------------------Copyright (C) 2021 webmote 版权所有创建者:$username$创建时间:$time$文件:$itemname$.cs功能描述:----------------------------------------------------------------*/
namespace $rootnamespace$
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;/// <summary>/// $safeitemname$接口输入参数/// </summary>public class $safeitemname$Args {}/// <summary>/// $safeitemname$接口输出参数/// </summary>public class $safeitemname$Result {}
}

好了,一次建立,接口的入参和出参类都写好了, 我们只需要写内容即可。

双击 扩展名.vstemplate的文件,配置 菜单项名称,如下:

...<TemplateData><Name>WebApi参数类</Name><Description>WebApiTemplate</Description>...

3.配置vsix包

回到第一个项目,我们引用Item template项目,然后找到文件为“source.extension.vsixmanifest”的文件,按下图配置即可。

vsix内的资产就是我们的模板项目,增加到里面。

OK,build,发包。

4. 安装


在bin目录找到 “VSIXProject1.vsix” 安装。
安装的时候需要退出 vs2019.

5、使用

我们在DTO目录建立接口 RegisterUser的入参和出参,只需要找到我们自定义名字。

建立效果如下:

/*----------------------------------------------------------------
Copyright (C) 2021 webmote 版权所有创建者:admin
创建时间:2021/4/7 16:45:11
文件:RegisterUser.cs
功能描述:----------------------------------------------------------------*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Service.DTO.User
{/// <summary>/// RegisterUser接口输入参数/// </summary>public class RegisterUserArgs{}/// <summary>/// RegisterUser接口输出参数/// </summary>public class RegisterUserResult{}
}

6、体验很好

自己定义的真香,我现在写代码更加爽了,只需要聚焦内容即可。
简单、一致,代码的可阅读性应该也提升了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bo JAVA是什么意思,大家来讨论下业务层(BO)该做什么事?该怎样做事?该怎么解决...

Java code//实体类public class User {String name;String password;public User(){}public User(String name, String password) {super();this.name name;this.password password;}public String getName() {return name;}public void setName(String name) {this.name na…

【个人笔记】关于IO类中流的整理

学习IO部分的知识后&#xff0c;被处理流的各种类搞得有点乱&#xff0c;所以得写篇文章总结下。IO包里面有很多输入输出类&#xff0c;一般我们是通过控制流来控制输入输出的。IO包里面对于控制流分为两大类&#xff0c;一类是字节流&#xff0c;一类是字符流。字符流的两个大…

全国胸最小的省是哪个,你知道吗?| 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源网络&#xff0c;侵权删&#xff09;所以最大的是哪个省的↓ ↓ ↓

经典正则表达式(转)

正则表达式用于字符串处理&#xff0c;表单验证等场合&#xff0c;实用高效&#xff0c;但用到时总是不太把握&#xff0c;以致往往要上网查一番。我将一些常用的表达式收藏在这里&#xff0c;作备忘之用。本贴随时会更新。 匹配中文字符的正则表达式&#xff1a; [\u4e00-\u9…

.NET Core with 微服务 - Elastic APM

上一次我们介绍了Seq日志聚合组件。这次要给大家介绍的是Elastic APM &#xff0c;一款应用程序性能监控组件。APM 监控围绕对应用、服务、容器的健康监控&#xff0c;对接口的调用链、性能进行监控。在我们实施微服务后&#xff0c;由于复杂的业务逻辑&#xff0c;服务之间的调…

java 推送数据给js,Node.js实现数据推送

场景&#xff1a;后端更新数据推送到客户端(Java部分使用Tomcat服务器)。后端推送数据的解决方案有很多&#xff0c;比如轮询、Comet、WebSocket。1. 轮询对于后端来说开发成本最低&#xff0c;就是按照传统的方式处理Ajax请求并返回数据&#xff0c;在学校的时候实验室的项目一…

【开学季限时免费】下载19880元大数据开发全链路教程(视频+源码)

随着大数据、云计算、物联网、人工智能这些行业的发展崛起&#xff0c;对于大数据人才的需求越来越大&#xff0c;而大数据人才的培养发展周期相对较长&#xff0c;导致了大数据人才短缺&#xff0c;市场供不应求。所以也就出现了大数据开发工程师、数仓工程师、ETL工程师.....…

COM 组件设计与应用(七)

COM 组件设计与应用&#xff08;七&#xff09;编译、注册、调用作者&#xff1a;杨老师 一、前言  上两回中&#xff0c;咱们用 ATL 写了第一个 COM 组件程序&#xff0c;这回中&#xff0c;主要介绍编译、注册和调用方法。示例程序你已经下载了吗&#xff1f;如果还没有下载…

root目录空间不够的问题

今天导入mysql表的时候&#xff0c;提示write file error /tmp/xxx 原因是表太大&#xff0c;创建临时表的时候&#xff0c;tmp目录不够空间了。 找到一个解决方法&#xff1a; 使用 mount --bind mount --bind /home/tmp /tmp 这样会把 /home/tmp目录mount成tmp&#xff0c;原…

NET问答: 为什么 IEnumerablestring 不能被初始化?

咨询区 markzzz&#xff1a;我有下面的一个对象。IEnumerable<string> m_oEnum null;现在我想初始化它&#xff0c;然后我做了下面的尝试。IEnumerable<string> m_oEnum new IEnumerable<string>() { "1", "2", "3"};很遗憾…

java spring 单例模式,spring中的单例模式

spring依赖注入的bean默认都是单例模式&#xff0c;他们是怎么创建的&#xff1f;在AbstractBeanFactory类中的getBean方法中调用了getSingleton()方法来创建bean&#xff1a;Nullableprotected Object getSingleton(String beanName, boolean allowEarlyReference) {Object si…

人类史上20个“最强大脑”

全世界只有3.14 %的人关注了青少年数学之旅今天给大家说道说道这人类历史上20位最强大脑&#xff0c;这些伟人来自各个不同的时期和领域&#xff0c;他们的思想和贡献对人类日后有着重大的影响&#xff0c;其中包括了众多的科学家&#xff0c;哲学家&#xff0c;诗人&#xff0…

LYNC2013部署系列PART4:群聊部署

前言&#xff1a;本篇文章将介绍LYNC2013群聊服务器的部署&#xff0c;在LYNC2010中&#xff0c;群聊服务还没集成到LYNC2010产品中&#xff0c;需要单独额外部署&#xff0c;群聊客户端也没有集成到LYNC2010客户端中。到LYNC2013中&#xff0c;集成工作全部搞定了。我是习惯了…

很久没有更新博客了

最近一直很忙&#xff0c;唉&#xff0c;一直没来&#xff0c;今天抽来来看一下~~ 转载于:https://www.cnblogs.com/Jerryes/archive/2005/10/28/264150.html

不要笑!写 | 还是 || ,还真是一个问题

这么简单的问题还写&#xff1f;先不要笑。打开你代码量最多的项目&#xff0c;搜索|或者&,看看有多少条这样的代码&#xff01;前不久&#xff0c;我在dotnet/machinelearning上提交了一个pull request。修改内容是把"|"改成"||", 把"&"…

java如何解压rar文件怎么打开,java解压rar文件

该文章参考了iteye某位大虾的博客&#xff0c;我自己进行了修改。请大家参考package cn;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import de.innosystec.unrar.Archive;import de.innosystec.un…

UNIX网络编程——ioctl 函数的用法详解

1.介绍Linux网络程序与内核交互的方法是通过ioctl来实现的&#xff0c;ioctl与网络协议栈进行交互&#xff0c;可得到网络接口的信息&#xff0c;网卡设备的映射属性和配置网络接口。并且还能够查看&#xff0c;修改&#xff0c;删除ARP高速缓存的信息&#xff0c;所以&#xf…

你对求生欲,一无所知!| 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅【1】【2】【3】【4】【5】【6】【7】【8】【9】【10】【11】【12】【13】【14】【15】&#xff08;图源网络&#xff0c;侵权删&#xff09;学到了吗&#xff1f;↓ ↓ ↓

C#位图BitArray 小试牛刀

前面聊了布隆过滤器&#xff0c;回归认识一下位图BitMap&#xff0c;阅读前文的同学应该发现了布隆过滤器本身就是基于位图&#xff0c;是位图的一种改进。难缠的布隆过滤器&#xff0c;这次终于通透了位图先看一个问题&#xff0c; 假如有1千万个整数&#xff0c;整数范围在1到…

装上了Visual Studio 2005

为了下Visual Studio 2005&#xff0c;我装上了从来没用过的BT&#xff0c;开着电脑下了一夜&#xff0c;今天早上终于下完了&#xff0c;2.6G呀&#xff0c;多么浩大的工程&#xff0c;比PES5还大。现在的软件动不动就是DVD&#xff0c;要不是还有个刻录机&#xff0c;我的硬盘…