VS2017插件开发-项目右键菜单

1.创建自定义命令

2.更改.vsct中Group节点的id

 <Group guid="guidPublishOwinPackageCmdSet1" id="MyMenuGroup" priority="0x0600">
        <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE" />
      </Group>

列举 Group 节点的Id属性其中比较关键的几个

IDM_VS_CTXT_SOLNNODE  是指的解决方案资源管理器里的解决方案

IDM_VS_CTXT_SOLNFOLDER    是指的解决方案资源管理器里的 解决方案里的文件夹,不是项目里的哈,这个文件夹是虚拟的,没有实际的文件夹映射

IDM_VS_CTXT_PROJNODE  是指的解决方案资源管理器里的项目

IDM_VS_CTXT_FOLDERNODE  是指的解决方案资源管理器里的项目里的文件夹

IDM_VS_CTXT_ITEMNODE  是指的解决方案资源管理器里的项目里的项,就例如cs、js文件

3.获取右键选择的项目物理路径

       private static Tuple<string, string, string> GetPath(IServiceProvider serviceProvider)
        {
            var dte = serviceProvider.GetService(typeof(DTE)) as DTE2;
            var projects = (UIHierarchyItem[])dte?.ToolWindows.SolutionExplorer.SelectedItems;
            if (projects == null)
            {
                ShowMessage("未选中任何项目!", serviceProvider);
                return null;

            }
            var project = projects[0];
            var item = project.Object as Project;
            var path = item?.FullName;
            if (string.IsNullOrWhiteSpace(path))
            {
                ShowMessage("项目路径为空!", serviceProvider);
                return null;

            }
            if (!File.Exists(path))
            {
                ShowMessage(path + "文件不存在!", serviceProvider);
                return null;

            }

            var srcPath = item?.Properties.Item("FullPath").Value?.ToString();
            if (string.IsNullOrWhiteSpace(srcPath))
            {
                ShowMessage("FullPath路径为空!", serviceProvider);
                return null;

            }
            //path:.csproj全路径
            //srcPath:.csproj所在的目录
            //item.Name:项目名称
            return Tuple.Create(path, srcPath, item.Name);
        }

 

转载于:https://www.cnblogs.com/gaobing/p/8328116.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值