本文是阅读Visual Studio Development Environment Model笔记.

VS IDE(Integrated development environment)是VSPackage的宿主框架,以便他们可以交互共享的服务.VS IDE实现UI就是一个很好的例子.IDE不仅提供了窗口容器,默认的工具栏,菜单,还提供了一个富COM来让UI成为可编程的.完整的命令处理和分发机制给用户提供了一个开放性的框架来访问已经安装的命令设备.[英文烂,中文更烂啊!!!囧]

可扩展架构

标准的IDE提供了大量的服务.

可扩展架构简图

VSPackage和服务的关系是双向的.VSPackage可以使用其他服务,也可以通过IProfferService接口来提供服务.基于服务的架构是从MS ActiveX设计试试中演化而来的,一个服务由一组有内在关联的接口形成一个任务.从严格意义COM的观点,所有的接口特别是服务必须是一个COM类的实现.

标准IDE提供了重要的服务给VSPackage,例如:SVsShell, SVsUIShell, SVsSolution.

:

Services

IDE service

描述

SVsShell

提供处理基础功能,VSPackage和注册的服务

SVsUIShell

提供基础窗口,UI相关的功能.例如:创建工具和文档窗口的功能

SVsSolution

提供解决方案相关功能,例如:列举,创建,监视(改动)项目

因为提供了共享的服务,VS IDE和VSPackage紧密地相互依赖.但他们有不同的职责.

VS IDE负责:

提供关键服务,通过额外的VSPackages

提供可编程界面

按用户或其他VSPackage需求,创建VSPackage的实例,

提供为多个VSPackage之间通信,协调的服务

管理解决方案和他们需要的文件

提供命令分发,例如:菜单,工具栏,上下文菜单

协调选择,上下文和货币[不解]

VSPackage负责:

执行初始化和终止

写入注册表信息,让IDE在合适的时间加载合适VSPackage

提供服务以便于其他VSPackage通信

提供新的项目类型,编辑器和设计器

提供内嵌UI元素的扩展,例如任务,工具箱,选项对话框

转载于:https://www.cnblogs.com/young40/archive/2010/11/03/1868064.html

[VSX.002]VS开发环境模型相关推荐

  1. docker:用官方镜像在本地搭建PHP开发环境

    远离搭建环境的烦恼,使用docker官方镜像也能简单搭建本地开发环境(可配置多站点,可灵活切换多个php版本).本文全是干货,无脑按步骤操作即可. 第一步:在本地创建一个工作目录,目录结构如下: ln ...

  2. Arduino 002 --- 在Ubuntu(Linux) 中搭建Arduino开发环境

    在Ubuntu/Linux 中搭建Arduino开发环境 我的Ubuntu系统:Ubuntu 14.04.10 TLS 32位 需要安装的Arduino的版本:Arduino 1.6.11(最新版本) ...

  3. Lesson 002 —— 网络七层模型

    Lesson 002 -- 网络七层模型 互联网的本质就是一系列网络协议.OSI(open system interconnect 开放系统互联)七层协议 或 tcp/ip 五层 或 tcp/ip 四 ...

  4. cmake开发环境 linux qt_一步步搭建CMake+QT+VTK+BOOST开发环境

    开发环境: 1.可以迅速处理大量并发网络数据包,ASIO库和winpcap 4.1.3库; 2.处理与显示点云模型数据,使用VTK 8.2.0库; 3.项目使用CMake+VC2017编译,GUI使用 ...

  5. python ai应用开发_AI应用开发实战 - 从零开始搭建macOS开发环境

    AI应用开发实战 - 从零开始搭建macOS开发环境 联系我们 OpenmindChina@microsoft.com 零.前提条件 一台能联网的电脑,使用macOS操作系统 请确保鼠标.键盘.显示器 ...

  6. ubuntu体验python_在Ubuntu下配置舒服的Python开发环境

    Ubuntu 提供了一个良好的 Python 开发环境,但如果想使我们的开发效率最大化,还需要进行很多定制化的安装和配置.下面的是我们团队开发人员推荐的一个安装和配置步骤,基于 Ubuntu 12.0 ...

  7. 在Windows环境下搭建Android开发环境

    标题:在Windows环境下搭建 Android 开发环境 作者:CrazyPebble 时间:2011年2月28日 声明:此文在参考其他网上资料以及笔者实践总结写下,一来自己可以做一些总结,二来给跟 ...

  8. 跨平台C++开发环境搭建——GNU+STL+Boost+wxWidget+OpenSceneGraph

    学了好长时间的C++了,鉴于对标准和设计模型模式的推崇,一直没有找到合适的GUI语言,也一直苦于GUI开发时我还要借助于Delphi,但是现在不一样了,花了一个周末整个跨平台的C++开发环境,编译器采 ...

  9. python软件包自带的集成开发环境-Python的10大集成开发环境和代码编辑器(指南)...

    使用IDLE或者Python Shell来编写Python是非常适合于简单程序的,但是这些工具往往将大型的编程项目变成一个个充满绝望和沮丧的"坑".使用一款集成开发环境甚至是一款好 ...

  10. python自带的集成开发环境是什么-Python的10大集成开发环境和代码编辑器(指南)...

    使用IDLE或者Python Shell来编写Python是非常适合于简单程序的,但是这些工具往往将大型的编程项目变成一个个充满绝望和沮丧的"坑".使用一款集成开发环境甚至是一款好 ...

最新文章

  1. Vuex-一个专为 Vue.js 应用程序开发的状态管理模式
  2. Java程序片:Java复制文件
  3. 阿里云消息队列 RocketMQ、Kafka 荣获金融级产品稳定性测评 “先进级” 认证
  4. vim补全html标签,vim括号引号html标签自动补全
  5. PyTorch报错No module named ‘transforms‘
  6. 64位windows 7下成功配置TortoiseGit使用Github服务器
  7. 安装完成后在命令行运行bash时报错0x80070057
  8. 单片机与gsm通信c语言,gsm模块如何与单片机通信?
  9. mysql建库权限_mysql数据库用户权限及建库脚本
  10. 从0开始学习自动化测试框架cypress(二)DOM
  11. 基于Scrapy框架的Python新闻爬虫
  12. 用Mediator Pattern + Queue 解决 订单处理流程
  13. 估计理论(6):如何确定BLUE?
  14. K-Means聚类及调用sklearn库代码实现
  15. Python 浮点数的舍入,round与decimal舍入方式
  16. Android Q app内存压缩优化方案介绍
  17. matlab某分子由25个原子组成,清华大学数学实验实验7无约束优化1
  18. 神思二代身份证读卡器Demo的C++版本
  19. 神经肿瘤组学基础知识、工作流程及应用
  20. 如何导出或删除Outlook.com搜索历史记录

热门文章

  1. 邮箱 / QQ 超链接
  2. Python 的List排序
  3. ADO.NET基础复习(二)
  4. .NET读、写、查、删、改XML文件
  5. 二线水温传感器怎么检测_水温传感器出现故障,发动机真的会限矩吗?本文告诉你答案...
  6. 信号与系统研讨(一)匹配滤波器
  7. ls 列出文件、ll以长格式列出文件详细信息
  8. Redis常用命令、数据类型讲解
  9. python自动发帖源码_Python3实现的 自动发帖小工具 -电脑资料
  10. python卡通滤镜_用Python实现Instagram滤镜,变成百变女神!