1. 程式人生 > >[轉]VS 2010 : 如何開發和部署Outlook 2010插件(Add-in)

[轉]VS 2010 : 如何開發和部署Outlook 2010插件(Add-in)

bili 添加 都是 內部 .com .sh 開發插件 設計 同時

本文轉自:https://www.cnblogs.com/chenxizhang/archive/2010/05/08/1730766.html

概述:

這篇文章,我將通過一個簡單的例子,給大家分享一下如何在VS 2010中開發和部署Outlook 2010的插件(Add-in)

首先,我要說一下什麽是插件(Add-in)

插件一般是對現有程序的擴展,微軟的Office系統公開了一套接口,可以很方便地讓開發人員基於這些接口去實現對Office應用程序的增強。這個接口,準確地說,就是Extensibility.IDTExtensibility2.

當然,除了Office,有很多應用程序都支持類似的擴展機制,例如IE,以及Visual Studio本身,都支持一定程序的擴展。

其次,我要說一下以前是怎麽開發插件Add-in的

開發Office插件(Add-in)的途徑有各種各樣的,我大致總結分為三類:

  • VBA 開發:這個是基於Visaul Basic for Application這套開發模型做的一些定制。這種定制的限制比較多一些,但開發難度相對來說更加低一些。做過VBA開發的朋友都知道,VBA是脫離不了應用程序本身的。例如Excel的VBA編輯器如下圖所示

技術分享圖片

  • VC++,Visual Basic開發:這種開發方式允許我們在VC++,或者VB 6中,直接實現Extensibility.IDTExtensibility2這套接口,並且可以更加靈活,做更加強大的一些定制。目前的Office應用程序中,默認就安裝好了的一些插件,都是這種方式做的。例如下圖是我的Outlook默認安裝的一些插件列表

技術分享圖片

【備註】很早之前,我也用VB 6做過這方面的開發。但現在基本連VB 6的安裝程序都找不到了。所以這裏就不截圖了,其實就是有一個項目模板,然後實現接口。開發這種插件,關鍵在於對Office本身內部的一些對象模型熟悉。

  • VSTO開發:所謂VSTO,全稱是Visual Studio Tools for Office.我記得是從VS 2003開始提供了VSTO 1.0,簡而言之,就是允許在.NET的開發環境中開發Office應用程序或者插件。這種方式有著顯而易見的好處,就是能力增強,因為可以用到.NET的整套框架。VSTO發展到現在有幾個版本,分別如下
    • VS 2003: VSTO 1.0
    • VS 2005: VSTO 2.0
    • VS 2008: VSTO 3.0
    • VS 2010: VSTO 4.0

    • VSTO 之前的版本有一些不太好的地方是部署,不要小看部署這個環節。如果你曾經花了很多精力寫出來了一個很好的插件,但是因為各式各樣的部署問題導致沒有辦法很順利地分發給你的用戶,那種感覺是很讓人沮喪的。VSTO的解決方案有相當多的一些環境依賴,另外還需要提升.NET中的安全策略等等。
    • 一個好消息是,現在的新版本中,開發和部署將是相對更加容易了。在開發方面,模板更加好用,也提供了對Ribbon的內置支持,部署方面,我們可以通過ClickOnce技術發布到網站,或者打包成一個vsto壓縮包文件,很容易地進行部署。本文我們就來用一個簡單例子進行說明。

然後,我們來看看在新版的開發工具中,如何快速高效地開發插件(Add-in)

作為演示,我主要側重於開發和部署的流程。我們要實現的一個插件,其場景比較簡單:

我們需要在Outlook中添加一個新的Ribbon按鈕,該按鈕點擊之後,可以彈出一個窗口,允許我們從Excel文件中導入聯系人

那就讓我們開始吧

第一步:創建一個Add-in項目

技術分享圖片

這個項目模板會自動創建下面的項目結構

技術分享圖片

【備註】在ThisAddin這個類中,可以很方便地訪問到Outlook的當前實例,只要使用如下的代碼即可

this.Application

第二步:添加一個Ribbon

我們需要為Outlook添加一個新的Ribbon按鈕,事實上這很容易做到。

技術分享圖片

我們選擇Ribbon(Visual Designer),這樣就可以在可視化界面中設計了

技術分享圖片

我們首先需要設置一下,這個Ribbon是在什麽地方要顯示。在下圖中,我們將RibbonType修改為Microsoft.Outlook.Explorer,這樣的意思是說,我們這個Ribbon是現在在Outlook默認的那個管理器窗口中的

技術分享圖片

接下來,我們可以添加一個按鈕到group1中去。工具箱中有很多可用的控件

技術分享圖片

我最好做好的Ribbon看起來像下面這樣

技術分享圖片

第三步:實現簡單的邏輯

接下來,我們可以為這個按鈕實現簡單的邏輯

通過雙擊該按鈕,會產生一個事件處理器

技術分享圖片

我簡單地實現代碼如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Tools.Ribbon;
using System.Windows.Forms;

namespace OutlookAddInSample
{
    public partial class MyRibbon
    {
        private void MyRibbon_Load(object sender, RibbonUIEventArgs e)
        {

        }

        private void btImport_Click(object sender, RibbonControlEventArgs e)
        {
            Form form = new Form()
            {
                Text = "Import Contacts from Excel File",
                StartPosition=FormStartPosition.CenterScreen
            };
            form.Show();
        }
    }
}

第四步:調試

完成如上的操作之後,一個最簡單的Add-in就做好了。那麽如何進行調試呢?

沒錯,直接按F5就可以進行調試了。此時,Outlook會自動打開,然後我們的Ribbon也確實能看到了

技術分享圖片

點擊該按鈕,我們也確實可以看到一個窗口被顯示出來了

技術分享圖片

同時,我們在Outlook的選項對話框中也能看到這個插件的信息

技術分享圖片

第五步:發布

如果我們在本機做好了調試,那麽如何分發給用戶呢?以前我們一般會制作一個MSI的安裝程序,現在你依然可以這麽做。但我今天主要介紹的是一種更加方便的部署方式,就是通過ClickOnce技術發布到網站或者文件夾中。

技術分享圖片

技術分享圖片

技術分享圖片

【註意】這裏的location是可以有下面幾種的。但我這裏保持默認的選擇,直接發布到一個文件夾

發布如果沒有遇到什麽錯誤的話,會生成下面的一個目錄

技術分享圖片

我們一般可以將這個目錄,打包給用戶即可。

第六步:安裝

接下來,用戶如果拿到了這些文件,應該如何安裝使用呢?其實也很簡單,它可以雙擊setup.exe,或者設置直接雙擊vsto文件也可以

一般情況下,會有一個提示。

技術分享圖片

點擊“install”

技術分享圖片

然後,我們再去打開Outlook的話,仍然是可以看到這個Add-in以及它所添加的Ribbon的

技術分享圖片

第七步:卸載

最後,如果用戶需要卸載這個插件,應該怎麽做呢?

他們可以在Programs and Features窗口中,找到這個插件,然後點擊“Uninstall”即可

技術分享圖片

總結

通過本文的簡單實例,大家可以了解到在VS 2010中開發Outlook 2010插件相比較之前而言,有了很大的一些改進。當然,VS 2010也可以開發Office 2007版本的插件。

[轉]VS 2010 : 如何開發和部署Outlook 2010插件(Add-in)