- 新建项目
- 添加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 -
-
-
-
VS插件开发(一)
于 2022-06-23 10:56:34 首次发布