如何扩展 visual studio如何写c 编辑器

如何扩展 Visual Studio 编辑器_百度知道
如何扩展 Visual Studio 编辑器
提问者采纳
p>工具-拓展与更新-联机里面有许多非常有用的插件://f.baidu.baidu://f.baidu.jpg" esrc="http.hiphotos。
其他类似问题
编辑器的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Visual Studio 实用扩展推荐_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
Visual Studio 实用扩展推荐
V​i​s​u​a​l​ ​S​t​u​d​i​o​ ​拥​有​非​常​不​错​的​可​扩​展​性​,​在​之​前​的​文​章​中​,​我​也​给​大​家​示​范​了​如​何​进​行​编​辑​器​的​扩​展​(​详​见​文​末​参​考​资​源​)​。​在​本​篇​文​章​中​,​我​将​介​绍​几​款​非​常​实​用​的​扩​展​,​从​而​帮​助​我​们​提​高​开​发​效​率​。
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢天极传媒:天极网全国分站
您现在的位置:
& >>通过包技术扩展Visual Studio 2005
通过包技术扩展Visual Studio 2005天极开发 08:00分享到:
  摘要 在本文中,我们将讨论基于包技术扩展其IDE的方式;最后,你将详细学习使用包来构建一个你自己的简单的定制编辑器的过程。  在本文中,你将会看到使用包扩展Visual Studio环境是多么容易。构建一个包是很简单的,但是要精通之却很难。很明显,这是因为,微软已经为你实现了所有结构化框架部分,其它的将由你来编写功能各异的代码。  开始前,你需要安装如下软件:  ?Visual Studio 2005  ?Visual Studio Industry Partners(VSIP) SDK  一、 用三步法构建一个包  下面是对创建一个包的大致概括:  1. 使用Visual Studio 2005创建一个新工程。在工程类型下,选择“Other Project Type -&Extensibility”,然后选择“Visual Studio Integration Package”。如果需要的话,你可以改变缺省设置,但是在此仅为了说明创建一个工作包的过程,所以我们全部使用缺省设置。  2. 点击OK启动“Visual Studio Integration Package”向导。  a. 在第一步中,选择Visual#;    b. 在第二步中,你可以进行更改或使用缺省项;  c. 在第三步中,点选“Menu Command”;  d. 在第四步中,使用缺省项。  3. 最后,向导为你创建所有文件(描述如下)。但是,只是为了实际看一下包的话,你不需要做任何其它事情。只需在按F5键后,静观发生的情况即可。
图1.基本包消息  当新IDE启动时,你将看到一个新选项出现在Tools菜单下―“My Command Name”。选择它后,你会看到一个如图1所示的对话框。  到目前为止,你已经看到了一个可以工作的基本的包。尽管它目前所实现的仅是生成一个消息框,但是它向你展示了所有必需的结构化代码,接下来则由你创造性发挥了。后面将向你介绍包方案的不同部分;或者更准确地说,在哪里实现你的创造性编程。  二、 插件还是包?    在细致讨论一个包的不同部分之前,了解一下它与一个插件的区别可能很有好处。下列是一个简单的对照比较:
高级(通常基于C#或VB.NET,还有C++)
低级(基于COM对象,通常使用C++或C#经由互操作程序集)
增强IDE UI,例如新命令、工具条、工具窗、按钮、事件响应、顶级菜单、上下文菜单
提供一个插件的所有特征,还有新工程类型,文档类型,编辑器,.NET语言,源代码控制集成,等等可以使用可扩展性工程类型创建 需要VSIP SDK
实现IDTExensibility2接口
实现IVSPackage接口
使用Visual Studio自动化对象模型定制现有IDE和自动化任务。
基于IDE本身所使用的低级COM对象和服务  一般地,你可以创建为IDE所识别的插件并且把它们加入到菜单中(通常是在Tools菜单下,除非你指定其它位置)。一旦激活这些插件,它们就可以与IDE中的其它不同的组件一起工作,例如编辑器格子或输出格子。  然而,包也可以创建新的IDE组件,例如一个专门构建用于与你的产品或语言一起工作的编辑器格子。借助于SDK中所包含的“Package Creation”向导,你可以用三种方式创建一个包:  ? 文件菜单:作为顶级菜单“Tools”下的一个新菜单项  ? 工具窗口:作为可以从菜单栏中激活的一个新工具窗口  ? 定制编辑器:作为一个针对你自己的文件类型的全新的编辑器
  三、 包模板中的文件  当从“VS Integration Package”中创建一个包工程时,包创建向导将自动地把若干新文件添加到你的工程;如果你创建一个插件的话,添加的文件还要多。大多数这些文件包含一些在代码中加了注释的文档或背景信息。下面是你的工程可能包括的一个文件列表。注意,其中一些文件特定于某些类型的包。
定制编辑器
Properties/AssemblyInfo.cs
属性,例如标题、描述、版权和版本
CtcComponents/Guids.h
唯一命令标识符列表
CtcComponents/PkgCmdID.h
用于定义命令条的命令ID
CtcComponents/Resource.h
CtcComponents/VsPackage1.ctc
实际布局和命令类型
Resources/Images_24bit.bmp
真彩色工具图标集,其中一种颜色用于透明度表示
Resources/Images_32bit.bmp
真彩色工具图标集,含有一个8位的alpha通道
Resources/Package.ico
“Help-&About”对话框的示例图标&
Resources/File.ico
示例文件图标
EditorFactory.cs
相应于“editor factory”的起始代码
EditorPane.cs
所有你需要定制一个编辑器格子的起始代码
一个你的GUID列表,例如相应于包和命令集(必须匹配Guids.h)
签名程序集的密钥文件
MyEditor.cs(名字可能有所不同)
实际的Rich Text Box,用作你的编辑器;在EditorPane.cs中实例化
MyControl.cs
MyToolWindow的UI
MyToolWindow.cs
你的工具窗口的起始代码;一个ToolWindowPane的子类
PkgCmdID.cs
你的命令ID列表(必须匹配PkgCmdID.h)
实现你的包的核心代码  四、一个详细的定制编辑器和命令的例子  在这个例子中,我们不是把新功能添加到现有IDE,而是创建一个新的编辑器。所以,你实质上是在重建一个IDE的核心方面。  那么,为什么要创建编辑器呢?当你想提供一个开发者可以在其中管理新文件类型或是全新语言的定制工作空间时,你可以构建一个编辑器。为了说明你能够完成的各种任务,我们可以把编辑器划分为四个类型:  标准的基于文件的编辑器―一个编辑器,提供简单的文本编辑功能,并且包括基本功能,如删除和插入。  Visual Studio核心编辑器―与IDE使用的一样的编辑器;你可以在其中使用某种Visual Studio工程类型。  定制编辑器―它与你创建的一个定制工程类型一起工作,包括构建到你的工程中的任何独有特征。  外部编辑器―一个独立的编辑程序,如记事本,你可以从你的包中进行调用。  上面的可扩展性SDK发行中含有一个独立的帮助文件,其中包括一些优秀的创建各种编辑器教程。作为入门,下列步骤将向你介绍使用菜单命令创建一个定制编辑器的过程。其实,你有太多的自由工具可以使用,但篇幅所限,在此恕不详及。
  首先,打开Visual Studio并创建一个新工程。同前一样,选择“Other Project Type-&Extensibility”,然后选择“Visual Studio Integration Package”。命名这个工程为“MySpecialEditor”。
图2.菜单命令和定制编辑器  ? 选择Visual#并且让向导生成一个新key文件。  ? 添加你的公司名,并且命名VSPackage为“My Special Editor”。  ? 当选择VSPackage选项时,选择“Menu Command”和“Custom Editor”,见图2。  ? 对于命令名,输入“My Special Command”,并且指定该命令ID为“cmdidSpecial”。  ? 在这个例子中,输入编辑器名为“My Special Editor”,文件扩展名是“specedit”,且缺省文件名为“MySpecialEd”。  ? 最后点击Finish,向导开始安装所有内容。需要的话,你可以按F5并且观察所发生的事情。  还要提及的是,该SDK发行中提供了大量有关类和接口的文档。目前为止,只要把你的菜单命令从Tool菜单下的默认位置移动到Edit菜单并且给它一个新图标即可。  ? 打开MySpecialEditor.ctc并且转到NEWGROUPS_BEGIN部分。下面一行:  guidMySpecialEditorCmdSet:MyMenuGroup,  guidSHLMainMenu:_VS_MENU_TOOLS,0x0600;  改为:  guidMySpecialEditorCmdSet:MyMenuGroup,  guidSHLMainMenu:IDM_VS_MENU_EDIT,0x0600;  ? 打开MySpecialEditor.ctc并转到BUTTONS_BEGIN部分。在以下列内容开头的行中:  guidMySpecialEditorCmdSet:cmdidSpecial,...  查找:  ...guidMySpecialEditorCmdSet:bmpPic1,...  并且用下列内容代替它:  ...guidMySpecialEditorCmdSet:bmpPicArrows,...  按F5运行程序。当你选择“File-&New File”时,你将在选项下看到你的新文件类型。选择它后,你就得到一个新的空的等待输入代码的定制编辑器。你可以在编辑选项下找到你的新命令(见图3)。至此,这个例子还没有实现多少功能;但是你已经可以很容易移动你的菜单,甚至包括在其它标题下创建新菜单组。你可以输入一些文本,保存它。最后,你就会看到你的默认文件名和扩展名显示出来。
图3.新的编辑菜单  五、 总结  注意,在VSIP SDK中,也有一篇文章“Walkthrough: Adding a command to an Editor Generated by the Package Wizard”,它更为细致地介绍了如何把其它命令添加到你的菜单上并且影响编辑器本身中的文本内容。但是,你可以自行深入研究。有关如何改进本文中所示编辑器的方面,请参考下面这些题目:  ? 自动格式化  ? 参数信息提示  ? 语句完成  ? 语法显亮  ? 查找和替换  ? 文本标记  ? 智能感知  ? 撤消支持  ? 下拉列表框条  ?绑定  ? 上下文菜单  ? 状态栏  ? 文本层  要查看一个完整的复杂的定制编辑器(包括一个编译器、语言服务,甚至带有一个控制台窗口)的例子,可以参考IronPython.sln方案,它位于“&Installation Path&\VisualStudioIntegration\Samples\IronPythonIntegration”路径下。这个示例包括所有用于把集成到你的IDE中的源文件。
(作者:朱先忠编译责任编辑:方舟)
欢迎在新浪微博上关注我们
document.write("");Visual Studio 2008 可扩展性开发(七):操作文本编辑器_ASP.NET_.Net开发_软件开发_天新网
您现在的位置: >
Visual Studio 2008 可扩展性开发(七):操作文本编辑器
日 博客园 Anders Cui
  前言  在可扩展性开发(六)中,我介绍了对于Solution Explorer的基本操作。不过,对咱们开发人员来说,绝大部分时间面对的还是编辑器。  VS2008的编辑器功能已经颇为强大了,如果我们能熟练使用快捷键,编写代码的过程是相当舒服的,就像《卓有成效的程序员》中所说:  &编程时始终优先使用而非&  但问题在于,VS面向的是所有的开发人员群体,它只能够提供最通用的功能,如果对VS的编辑器有些额外的需求,我们只好自己动手了,本文将介绍如何扩展文本编辑器。  AOM中编辑器相关的接口  跟以前一样,这里首先简单介绍一下AOM中的相关接口、类型。  1)Documents  在默认情况下,VS会以标签式文档呈现打开的各个文档。这些文档的集合在AOM中就是Documents,它实现了IEnumerable接口。通过该接口,我们可以获取当前打开的文档,它的重要属性和方法有:  Count:打开文档的数目;   Add():向集合中添加新的文档;   CloseAll():关闭所有文档,它的参数为vsSaveChanges枚举,可提供关闭时的行为选项,比如提示用户进行保存;   Item():根据索引获取集合中的某个文档;   Open():打开一个文档;   SaveAll():保存所有文档。   这些成员的含义是相当简单、直白的。我们可以通过循环变量所有打开的文档,以获取所有文档的信息,对于单个文档来说,它对应于Document接口。  2)Document  表示在VS中打开进行编辑的文档。它的成员较多,这里仅介绍一下比较重要的几个:  FullName/Path/Name:文档的全名、所在目录、文件名;   Language:文档的语言类型,如CSharp;   ProjectItem:获取与文档关联的ProjectItem对象;
Copyright &
<, All Rights Reserved.
晨新科技 版权所有 Created by TXSite.net}

我要回帖

更多关于 visual studio 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信