Visual Studio 2008可擴充性開發(三):Add-In運行機制解析(上)

來源:互聯網
上載者:User

前言

上一篇隨筆Macro和Add-In初探介紹了如何開發兩者的HelloWorld程式。沒錯,宏確實 簡單易行。不過在某些情況下,比如在商業軟體中,宏在效能和智慧財產權方面可能會帶來 麻煩,此時那把更好的鎚子是Add-In。

在初探一文中,我介紹了如何使用Add-In嚮導來開發第一個Add-In。VS是一款很棒的 開發工具,它的各種嚮導(以及其它模板、視覺化檢視等)做得非常好,不過我發現這一 強大之處到頭來反而給人詬病。其中一種說法是,這些方便的工具讓初學者入門容易,並 慣壞了他們,以致於想登堂入室就難得多了。客觀地說,這不是VS的錯,VS沒有阻止你去 瞭解這些工具的背後所在。這些工具會產生大量代碼,我們需要主動去瞭解它們,《程式 員修鍊之道》中曾提到:

Don't Use Wizard Code You Don't Understand

很明顯,作者不是說不能使用嚮導,而是說要在瞭解嚮導的前提下使用它。尤其是你 寫的代碼要跟嚮導產生的程式碼混在一起的時候,這些代碼終究要變成你的代碼,而Add-In 的開發正是如此!所以我們必須得先瞭解Add-In嚮導做了些什麼。

Add-In嚮導在收集資訊

Add-In嚮導共有六步,每一步我們都可以輸入一定的資訊,告訴VS如何設定。這可以 看作是嚮導收集資訊的過程,這些資訊包括:

程式設計語言:可以選擇C#、VB.NET、VC,如果是手工編寫Add-In,就沒這個限制了

宿主環境:Add-In可同時運行在不同版本的VS IDE和/或Macro IDE內

名稱和描述

功能表命令:VS據此產生一些代碼,在Tools菜單中添加一個新的功能表項目

命令列運行支援:這樣的Add-In說明它不會呈現需要使用者介入的UI,如強制回應對話方塊

啟動時載入:VS可以在啟動時自動載入Add-In

About對話方塊:可以將Add-In的資訊顯示在About對話方塊中

資訊收集完畢後,VS會產生一個新的Add-In項目。

Add-In項目

Add-In項目是一個類庫項目(可以參考初探一文中做的例子),僅此而已。該項目包 含了“Connect.cs”檔案,它定義了Connect類,還有一個設定檔FirstAddin.AddIn。

開啟Connect.cs,我們仔細分析一下。Connect類實現了兩個介面,一是 IDTExtensibility2,該介面用於在Add-In和IDE之間進行通訊;二是IDTCommandTarget, 如果選擇了嚮導中的UI選項,就需要實現它。

IDTExtensibility2包含5個方法:

OnConnection:在載入Add-In時調用

OnStartupComplete:在Add-In隨著VS的啟動完成載入後調用

OnAddInsUpdate:在VS載入或卸載Add-In時調用

OnBeginShutdown:在VS關閉時調用

OnDisconnection:在卸載Add-In時調用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.