VS插件开发(一)

1 篇文章 0 订阅
  • 新建项目
  • 添加Command
  • 修改工具显示位置
  • IDM_VS_MENU_TOOLS 菜单
    IDM_VS_CTXT_CODEWIN 右键菜单添加命令
    IDM_VS_CTXT_SOLNNODE 是指的解決方案資源管理器的解決方案,
    IDM_VS_CTXT_SOLNFOLDER 是指的解決方案資源管理器裏的解決方案裏的文件夾,不是項目裏的哈,這個文件夾是虛擬的,沒有實際的文件夾映射,
    IDM_VS_CTXT_PROJNODE 是指的解決方案資源管理器裏的項目,
    IDM_VS_CTXT_FOLDERNODE 是指的解決方案資源管理器裏的項目裏的文件夾,
    IDM_VS_CTXT_ITEMNODE 是指的解決方案資源管理器裏的項目裏的項,就例如cs、js文件
    

  • 获取代码区选中内容
  • DTE dte = ServiceProvider.GetServiceAsync(typeof(EnvDTE.DTE)).Result as DTE;
    if (dte.ActiveDocument != null && dte.ActiveDocument.Type == "Text")
    {
    	var selection = (TextSelection)dte.ActiveDocument.Selection;
    	string text = selection?.Text;
    }

  • 获取项目名称和路径
  • var dte2 = Package.GetGlobalService(typeof(DTE)) as DTE2;
    var solution = dte2.Solution;
    var SolutionName = Path.GetFileName(solution.FullName);     //解决方案名称
    var SolutionPath = Path.GetDirectoryName(solution.FullName);//解决方案路径

  • 查找匹配项 参考https://docs.microsoft.com/zh-cn/dotnet/api/envdte.find?view=visualstudiosdk-2015
  • Action

    获取或设置指示如何进行查找(例如查找下一个匹配项、全部查找、替换并查找等)的值。

    Backwards

    获取或设置一个值,该值表示是否从当前位置执行向后搜索。

    DTE

    获取顶级扩展性对象。

    FilesOfType

    获取或设置要搜索的文件的文件扩展名。

    FindWhat

    获取或设置要查找的文本或模式。

    KeepModifiedDocumentsOpen

    获取或设置一个值,该值指示在 替换 操作后修改的文档是否仍保持打开状态。

    MatchCase

    获取或设置一个值,该值指示搜索是否区分大小写。

    MatchInHiddenText

    获取或设置一个值,该值指示搜索中是否包括隐藏文本。

    MatchWholeWord

    获取或设置一个值,该值指示搜索是否为全字匹配。

    Parent

    获取 Find 对象的直接父对象。

    PatternSyntax

    获取或设置用于指定搜索模式的语法。

    ReplaceWith

    获取或设置替换操作的替换文本。

    ResultsLocation

    获取或设置在批量搜索操作中显示结果的位置。

    SearchPath

    获取或设置“在文件中查找”操作使用的目录列表。

    SearchSubfolders

    获取或设置一个值,该值指示是否在 搜索 操作中包括子文件夹。

    Target

    获取或设置搜索操作的目标,例如所有打开的文档、文件和活动文档等。

  • DTE dte = ServiceProvider.GetServiceAsync(typeof(EnvDTE.DTE)).Result as DTE;
    string selectTXT = string.Empty;
    if (dte.ActiveDocument != null && dte.ActiveDocument.Type == "Text")
    {
    	var selection = (TextSelection)dte.ActiveDocument.Selection;
    	string text = selection?.Text;
    	if(text=="")
    	{
    		MessageBox.Show("未选中有效文本!");
    		return;
    	}
    
    
    	Find objFind = dte.Find;
    	//查找方式
    	objFind.Action = vsFindAction.vsFindActionFindAll;
    	objFind.Backwards = false;
    	//文件类型
    	objFind.FilesOfType = "*.*";
    	//查找内容
    	objFind.FindWhat = text;
    	objFind.KeepModifiedDocumentsOpen = true;
    	objFind.MatchCase = true;
    	objFind.MatchInHiddenText = false;
    	objFind.MatchWholeWord = true;
    	objFind.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral;
    	//objFind.ReplaceWith = "NEW THING";
    	//搜素结果显示
    	objFind.ResultsLocation = vsFindResultsLocation.vsFindResults1;
    	objFind.Target = vsFindTarget.vsFindTargetCurrentDocument;
    	vsFindResult result = objFind.Execute();
    }

  • 添加断点 https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2012/0k5ada3y(v=vs.110)
  • EnvDTE.Debugger debugger = (EnvDTE.Debugger)dte.Debugger;
    
    dte.ActiveDocument.Name--文件名
    line--行号
    debugger.Breakpoints.Add("", dte.ActiveDocument.Name, line,1);
  • 删除断点
  • EnvDTE.Debugger debugger = (EnvDTE.Debugger)dte.Debugger;
    
    dte.ActiveDocument.FullName--删除断点所在的文件
    line--删除断点所在的行号
    for (int i = 1; i <= debugger.Breakpoints.Count; i++)
    {
    	if(dte.ActiveDocument.FullName == debugger.Breakpoints.Item(i).File &&
    		line == debugger.Breakpoints.Item(i).FileLine)
    	{
    		debugger.Breakpoints.Item(i).Delete();	  
    	}                           
    }

  • 以下时是一个批量添加删除断点的插件使用
  • 源代码:https://gitee.com/wodemch/vsix.git
  • 插件下载:https://marketplace.visualstudio.com/items?itemName=mtgh.ADBreakPoint
  • 网盘下载: https://wwc.lanzouf.com/b03j289qdhttps://wwc.lanzouf.com/b03j289qd
    密码:dfvy

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值