您的位置:首页 > 其它

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

2018-01-22 11:24 429 查看
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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: