使用C# 扩展VS的带工具栏的编辑器(翻译)

摘要:
此示例显示如何使用包来扩展VisualStudio,以支持具有工具箱支持的特定文件类型的编辑器。在本例中,我们将为tbx文件实现一个An编辑器和一个可用于此文档的工具包项目。此编辑器使用SVsToolbox服务并实现IVsToolboxUser界面,以支持工具箱交互、工具箱操作和拖动。在此编辑器中,支持LOGVIEWID。Designer逻辑视图需要在注册表中注册条目信息,以说明包支持此后缀。

介绍

这个例子展示了如何使用一个包(Package)来扩展Visual Studio,使之支持一个特定文件类型的编辑器并附带工具箱支持,在这个例子中我们将实现一个 .tbx文件的编辑器以及一个可用于此文档的工具箱项目。

  • 提供一个编辑器工厂类;
  • 文档的序列化和反序列化;
  • 工具箱支持,即从工具箱中拖动一个文本到文档中;
  • 支持源代码控制和只读文件支持。
使用C# 扩展VS的带工具栏的编辑器(翻译)第1张

入门


这个例子实现了.tbx文件的编辑器功能,其内部实际上只是简单的使用了RickTextBox控件来编辑文档。这个例子主要还是用来展示编辑器如何与Vistual Studio工具箱的交互。
这个编辑器使用了SVsToolbox服务并实现了IVsToolboxUser接口,以支持于工具箱交互,实现操控工具箱和支持拖动。
在这个编辑器中,支持LOGVIEWID_Designer逻辑视图,需要在注册表中登记入口信息以描述这个包支持此后缀。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Editors\ {93fa4dc3-61ec-47af-b0ba-50cad3caf049}] "DisplayName"="#106" "Package"="{68a4ede6-8f63-44f2-803e-65f770e709e1}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Editors\ {93fa4dc3-61ec-47af-b0ba-50cad3caf049}\Extensions] "addin"=dword:00000032

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Editors\ {93fa4dc3-61ec-47af-b0ba-50cad3caf049}\LogicalViews] "{7651a702-06e5-11d1-8ebd-00a0c90f26ea}"=""

其中
{93fa4dc3-61ec-47af-b0ba-50cad3caf049}是指EditorFactory类型的COM GUID;
{68a4ede6-8f63-44f2-803e-65f770e709e1}指EditorPackage的COM GUID;
{7651a702-06e5-11d1-8ebd-00a0c90f26ea}指的是 LOGVIEWID_Designer的值。


这个Example.EditorWithToolbox的例子包含一个IntergrationTests的目录,这个目录中的测试用例要求你的机器必须安装VsIdeTestHost.msi ,这个安装包将创建 VisualStudioTeamSystemIntegration\Test Tool Extensibility\VsIdeHostAdapter文件夹。

项目文件
AssemblyInfo.cs包含组装件的信息
ClassDiagram.cd工程的类描述图
EditorFactory.cs实现了IVsEditorFactory接口以创建编辑器的视图对象
EditorPane.cs实现了EditorPane类, 用来容纳编辑器 (RichTextBox控件) 并响应编辑器的Command命令
EditorControl.cs派生自RichTextBox.的控件,用来编辑文本
GuidList.cs包含了所有的GUID定义, 包括package的GUID和所有Command的GUID.
Resources.resx项目的资源文件. 这些定义将被SampleDocViewEditor.vsdir使用.
EditorPackage.cs包含了包的定义,其关于编辑器的attributes定义能够自动注册到注册表中,他也实现了创建一个EditorFactory实例,并通知IDE (调用 IVsRegisterEditor::RegisterEditor).
Templates\tbx.tbxEditorWithToolbox.vsdir 将使用这个 "tbx"作为例子文件.
Templates\EditorWithToolbox.vsdir在Visual Studio的新建对话框中,提供模板。
© Microsoft Corporation. All rights reserved.

免责声明:文章转载自《使用C# 扩展VS的带工具栏的编辑器(翻译)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Jmeter性能测试-常用监听器的使用js循环读取table里面的数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Toolbar 工具栏 菜单 标题栏 Menu

要使用Toolbar,要先将标题栏(ActionBar)关掉; style.xml中:<style name="MainActivityTheme" parent="Theme.AppCompat.Light.NoActionBar"/>AndroidManifest.xml中:<activity android:name=".MainA...

vi编辑器的学习使用(十五)

Vim大量的工作是通过命令行的方式来完成,这样的命令行方式对于则接触Vim新手来说也许会觉得难于操作,可是当我们习惯了这样的工作方式后,我们就不得不佩服Vim的强大功能,正是这些命令使得我们可以高效的来完成我们的工作.而在Vim当中还有一些其他的命令.命令:ascii或者是ga可以用ASCII码和八进制及十六进制打印出来.当我们编辑多字节文件时,例如说我们...

2020年5月

Unity->Player Settings->Other Settings->Write Permission->External(SDCard) 关于Unity 打安卓包后在安卓9.0及以上不能通过http下载文件的解决方案 原始文件位置 增加 android:usesCleartextTraffics="true" 生...

修改git commit默认触发的编辑器

使用git commit会自动启动编辑器编辑本次提交的comment,git默认配置是GNU nano,但是很多人不是很熟悉(我就是),其实这个是可以自行配置的。 编辑制定代码库的.git/config文件,一般长这样: [core] repositoryformatversion = 0 filemode = true bare = false...

TinyMCE实现word图片自动转存

由于工作需要必须将word文档内容粘贴到编辑器中使用 但发现word中的图片粘贴后变成了file:///xxxx.jpg这种内容,如果上传到服务器后其他人也访问不了,网上找了很多编辑器发现没有一个能直接解决这个问题 考虑到自己除了工作其他时间基本上不使用windows,因此打算使用nodejs来解决这一问题 发现不管什么编辑器只要将图片转换成base64后...

第二章:Android Studio概述(一)[学习Android Studio汉化教程]

Android Studio是一个视窗化的开发环境。为了充分利用有限的屏幕空间,不让你束手束脚,Android Studio 在特定的时间仅仅显示一小部分可用窗口。  除了一些上下文敏感的窗口和上下文相关的窗口显示出来外,其他的仍旧隐藏,除非你主动打开它们。  或者相反,一些可见的窗口直到你主动隐藏它们。  为了充分利用Android Studio,你就需...