2019-3-1-VisualStudio-扩展开发-获得输出窗口内容
title | author | date | CreateTime | categories |
---|---|---|---|---|
VisualStudio 扩展开发 获得输出窗口内容
|
lindexi
|
2019-03-01 09:21:41 +0800
|
2019-02-02 16:18:16 +0800
|
VisualStudio
|
本文告诉大家如何拿到 VisualStudio 输出窗口的内容
在上一篇告诉大家如何开发添加菜单 点击的时候可以使用方法,如果需要拿到 VisualStudio 的输出窗口的内容,如想要开发一个插件,通过这个工具可以过滤输出
有很多小伙伴在输出的时候,想要将所有的内容输出,然后我就很难看到自己想要看的内容
while (true)
{
Debug.WriteLine("林德熙是逗比");
}
我想要做一个工具,需要在输出添加开发者同时只看到自己的输出,如修改一点输出的代码,判断如果使用 lindexi:
开始的,就输出,如果不是就不输出
while (true)
{
Debug.WriteLine("lindexi: 林德熙是逗比");
}
现在的问题就是如何拿到 Debug.WriteLine 输出到 VisualStudio 窗口,于是我就开始研究这个方法
在上一篇博客的方法通过 Package.GetGlobalService 拿到 DTE 在 VisualStudio 使用了很多事件,输出到窗口就是一个 OutputWindowEvents 方法,这些没有直接在文档说到
先创建一些字段
private DTE _dte;
private Events _dteEvents;
private OutputWindowEvents _documentEvents;
通过下面的代码就可以拿到输出窗口
private void Execute(object sender, EventArgs e)
{
ThreadHelper.ThrowIfNotOnUIThread();
_dte = (DTE) Package.GetGlobalService(typeof(SDTE));
_dteEvents = _dte.Events;
_documentEvents = _dteEvents.OutputWindowEvents; _documentEvents.PaneUpdated += GetText;
} private void GetText(OutputWindowPane pane)
{
// 这里的 OutputWindowPane 就是输出窗口
ThreadHelper.ThrowIfNotOnUIThread();
TextDocument document = pane.TextDocument;
EditPoint point = document.StartPoint.CreateEditPoint(); var str = point.GetText(document.EndPoint);
}
这里通过 PaneUpdated 可以拿到有 Pane 更新的事件,于是在 GetText 方法的 GetText 返回的值就是输出窗口里面的
这里为什么不是输出窗口而是输出窗口的 Pane 因为一个输出窗口是有很多 Pane 的,如源代码管理,调试等
这里的一个就是一个 Pane 都是在输出窗口里面
那么如何确定监听的是调试窗口?拿到的每个 Pane 都有一个 GUID 可以通过 IDE GUID 找到调试窗口的 GUID 判断当前是调试窗口
微软在 VisualStudio 开发大量使用 GUID 的注入方式,通过这个方式的优点是需要知道有这个 GUID 才能拿到接口,同时可以在任意的地方拿到。
在想要通过判断当前的窗口是调试的时候,但是小伙伴告诉我,现在有这样的插件Filter Debug Window 我用了一下,发现我需要的功能刚好就是这个工具
2019-3-1-VisualStudio-扩展开发-获得输出窗口内容的更多相关文章
- VisualStudio 扩展开发 获得输出窗口内容
本文告诉大家如何拿到 VisualStudio 输出窗口的内容 在上一篇告诉大家如何开发添加菜单 点击的时候可以使用方法,如果需要拿到 VisualStudio 的输出窗口的内容,如想要开发一个插件, ...
- VisualStudio 扩展开发
本文主要:如何开发一个 visual Studio 扩展,其实扩展也叫插件. 那么就是如何开发一个 vs插件. 我写这博客时候,是我在开发一个插件:编码规范工具.记录的是我从不知道到发布插件,如果遇到 ...
- 2019-2-3-VisualStudio-扩展开发-添加输出窗口
title author date CreateTime categories VisualStudio 扩展开发 添加输出窗口 lindexi 2019-02-03 11:41:40 +0800 2 ...
- 利用Visual Studio 2017的扩展开发(VSIX、ItemTemplate) 快速实现项目的半自动化搭建
目录 0.引言 1.什么是Visual Studio项目模板 2.IWizad接口 3.通过Visual Studio扩展开发实现领域驱动开发 3.1 使用VSIX+ProjectTemplate创建 ...
- PHP扩展开发相关总结
1.线程安全宏定义 在TSRM/TSRM.h文件中有如下定义 #define TSRMLS_FETCH() void ***tsrm_ls = (void ***) ts_resource_ex(0, ...
- Chrome浏览器扩展开发系列之十四
Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging 时间:2015-10-08 16:17:59 阅读:1361 评论:0 收藏:0 ...
- PHP扩展开发(1):入门
有关PHP扩展开发的文章.博客已经很多了,比较经典的有: TIPI项目(http://www.php-internals.com/,强烈推荐) <Extending and Embedding ...
- centos php扩展开发流程
原文:centos php扩展开发流程 一.安装php centos 默认 yum 安装 php 版本为 5.3, 很多php框架基本上要求5.4以上版本,这时候不能直接 用 yum install ...
- PHP扩展开发-简单类扩展
今天来学习简单类扩展开发 实现目标为如下php的类 <?php class classext(){ private $username; CONST URL="http://www.g ...
随机推荐
- Python_pymysql
pymysql安装:pip3 install pymysql 第一个实例:连接数据库进行用户验证 条件:数据库中已存在一个用户表,包含用户名.密码 import pymysql user = in ...
- leetcood学习笔记-45-跳跃游戏二
题目描述: 第一次提交;超时 class Solution: def jump(self, nums: List[int]) -> int: l = [] for i in range(len( ...
- 校园商铺-4店铺注册功能模块-10店铺注册之js实现
1. 建立js目录和文件 1.1 建立js目录 在webapp下新建文件夹js,再在js目录下新建shop文件夹. 1.2 js文件 js的功能: 1.从后台获取到店铺分类.区域等是信息,将它填充到前 ...
- SpringBoot--Thymeleaf入门使用
一.概述 今天学习到了SpringBoot中的WEB开发,SpringBoot提供了spring-boot-stater-web为web开发给予支持,它里面内嵌了以下依赖: <dependenc ...
- day 57 Django基础五之django模型层之关联管理器
Django基础五之django模型层之关联管理器 class RelatedManager "关联管理器"是在一对多或者多对多的关联上下文中使用的管理器.它存在于下面两种情况 ...
- ICPC 2019 徐州网络赛
ICPC 2019 徐州网络赛 比赛时间:2019.9.7 比赛链接:The Preliminary Contest for ICPC Asia Xuzhou 2019 赛后的经验总结 // 比赛完才 ...
- 第四周课堂笔记3th
1.函数的嵌套 作用域,说的是变量 全局作用域:内置命名空间,全局命名空间 全局空间不可以引用局部空间 局部作用域: 局部命名空间 开辟的临时空间前提是调用了函数 全局作用域在整个文件中被使用 L ...
- vue-router的访问权限管理
路由守卫(路由钩子.拦截器) vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航.有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的. 可以不登录直接进入系统 ...
- amazeUI表单提交验证--input框required
效果: html: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- MAC地址获取,有线网卡与无线网卡、物理网卡与虚拟网卡的区分
获取当前活跃状态的网卡MAC地址.物理地址 Wmic命令:Win32_NetworkAdapter和Win32_NetworkAdapterConfiguration. 其中cmd命令行执行: 1. ...