介紹
這個例子展示了如何使用一個包(Package)來擴充Visual Studio,使之支援一個特定檔案類型的編輯器並附帶工具箱支援,在這個例子中我們將實現一個 .tbx檔案的編輯器以及一個可用於此文檔的工具箱項目。
- 提供一個編輯器工廠類;
- 文檔的序列化和還原序列化;
- 工具箱支援,即從工具箱中拖動一個文本到文檔中;
- 支援原始碼控制和唯讀檔案支援。
入門
這個例子實現了.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.tbx |
EditorWithToolbox.vsdir 將使用這個 "tbx"作為例子檔案. |
| Templates\EditorWithToolbox.vsdir |
在Visual Studio的建立對話方塊中,提供模板。 |
Microsoft Corporation. All rights reserved.