前言
这一篇是VS插件基于Visual Studio SDK扩展开发的,可能有些朋友看到【生成实体】心里可能会暗想,T4模板都可以做了、动软不是已经做了么、不就是读库保存文件到指定路径么……
我希望做的效果是:
1.工具集成到vs上
2.动作完成后体现到项目(添加、删除项目项)
3.使用简单、轻量、灵活(配置化)
4.不依赖ORM(前两点有点像EF的DBFirst吧?)
文章最后会给上源码地址。
下面是效果图:
处理流程
以上是完整处理流程,我打算选择部分流程来讲。如果有对Visual Studio Package开发还没一个认识,可以看我之前写的一篇《Visual Studio Package 插件开发》。
按钮的位置
从上图看见,按钮是在选中项目右键弹出的菜单栏里。
打开vsct文件,修改Group的Parent节点,修改对应的guid和id。
之前那边文章有提到在文件:您的vs安装目录\VisualStudio2013\VSSDK\VisualStudioIntegration\Common\Inc\vsshlids.h 可以找到需要修改的名称,但是右键是没有在文件里定义,因此我们需要另外换一种方法。
1、打开注册表编辑器(打开运行窗口,输入regedit),
2、路径[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\General],
3、右击-新建-DWORD(32-位)值(D),其命名为EnableVSIPLogging
4、并将其值改为1。重启VS,打开项目
5、按下Ctrl+Shift,对项目点击右键,就会弹出窗口(如下图)
Guid和CmdID的值就是我们需要的,在vsct文件Symbols节点添加GuidSymbol项,value上图的{D309F791-903F-11D0-9EFC-00A0C911004F},IDSymbol项value为1026。
最后在Group的Parent节点的属性guid和id改为与上面对应,下面代码为例子。
PS:上面方法有点久远了,现在2017、2019可以用新的方式来查找需要的功能guid与cmdID。
在VS的【扩展与更新】搜索并安装Extensibility Tools,然后在vs【视图】-【 Enable VSIP Logging】点击并重启后,就可以用ctrl+shirt+右键点击需要查的界面,就可以弹出需要的信息,我测试过vs2017可用。
非常感谢yanusosu兄弟的贡献。
<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <Commands package="guidAutoBuildEntityPkg"> <Groups> <Group guid="guidAutoBuildEntityCmdSet" id="MyMenuGroup" priority="0x0600"> <Parent guid="guidCodeWindowRightClickCmdSet" id="CodeWindowRightClickMenu"/> </Group> </Groups> </Commands> <Symbols> <GuidSymbol name="guidAutoBuildEntityPkg" value="{c095f8f8-3f87-4eac-8dc0-44939a85b2f2}" /> <GuidSymbol name="guidCodeWindowRightClickCmdSet" value="{D309F791-903F-11D0-9EFC-00A0C911004F}"> <IDSymbol name="CodeWindowRightClickMenu" value="1026" /> </GuidSymbol> </Symbols> </CommandTable>