[转]VS 2010 : 如何开发和部署Outlook 2010插件(Add-in)
本文转自: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)的更多相关文章
- 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序
原文 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 Jim ...
- VSTO 学习笔记(十)Office 2010 Ribbon开发
原文:VSTO 学习笔记(十)Office 2010 Ribbon开发 微软的Office系列办公套件从Office 2007开始首次引入了Ribbon导航菜单模式,其将一系列相关的功能集成在一个个R ...
- 【VS开发】VSTO 学习笔记(十)Office 2010 Ribbon开发
微软的Office系列办公套件从Office 2007开始首次引入了Ribbon导航菜单模式,其将一系列相关的功能集成在一个个Ribbon中,便于集中管理.操作.这种Ribbon是高度可定制的,用户可 ...
- [入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一)
[入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一) Date 周二 06 一月 2015 By 钟谢伟 Tags mvc4 / asp.net 示 ...
- 有意思的Python:开发和部署一览
我觉得在有时间的条件下,学习不同的开发语言,对于保持对技术的理解是有帮助的. Python是一门这样简单而且有趣的语言.网上资料已经比较多了.我这里主要对开发和部署环境所涉及的几个工具做些介绍. 1. ...
- ASP.NET Core开发-Docker部署运行
ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...
- SharePoint Server 2013开发之旅(三):为SharePoint Server配置App开发、部署、管理环境
上一篇我讲解了如何利用微软提供的Office 365开发人员网站,进行在线的SharePoint App开发,这当然是不错的一个选择,因为你可以快速地进行开发和调试.(仅仅针对App开发而言).但是, ...
- 一个CentOS7的开发环境部署,包括防火墙|VPN|多IP多网关|HTTP代理服务器设置等
http://www.lenggirl.com/code/centos7.html layout: post title: "一个CentOS7的开发环境部署,包括防火墙|VPN|HTTP代 ...
- 西秦的ACE-Python教程 一、Python本地开发环境部署
西秦的ACE-Python教程 一.Python本地开发环境部署 西秦 级别: 论坛版主 发帖 1357 云币 2782 加关注 写私信 只看楼主 更多操作楼主 发表于: 10-10 ...
随机推荐
- hbase启动异常的慢
hbase启动慢 hbase启动非常慢,要几个小时,查看日志,发现有如下异常信息: 2016-12-02 22:39:09,365 ERROR [RS_LOG_REPLAY_OPS-db-dn001: ...
- 关于gridview改变行内容事件需要点击别的行或控件才能执行
一般的datagridview控件: this.dgvAssetList.CurrentCell = null;//取消datagridview行的编辑状态 Dev gridcontrol控件 Gr ...
- Android 为库(library)创建不同编译环境
项目中需要导入库,一般有两种情况,一种是直接路径导入,一种是导入库的 aar 文件. 1. 设置库项目 1. 在库项目的 src 目录下设置 debug 目录,里面可以添加代码或者 res 文件夹. ...
- Python 第三方包上传至 PyPI 服务器
PyPI 服务器主要功能是?PyPI 服务器怎么搭建? PyPI 服务器可以用来管理自己开发的 Python 第三包. Pypi服务器搭建 Python 第三方包在本地打包 # 本地目录执行以下命令应 ...
- windows 安装nexus3
下载地址 nexus官网下载页面 文件名:nexus-3.3.1-01-win64.zip,解压,cd到bin目录 运行: nexus.exe /run 1 安装成系统服务: nexus.exe /i ...
- 安装gitlab
安装源: git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 7-10-stable gitlab 安装文档: 在github上:gitl ...
- Spring+Mybatis整合时 Failed to read candidate component class,Caused by:IllegalArgumentException
Spring+Mybatis整合时Caused by: java.lang.IllegalArgumentException错误 org.springframework.beans.factory.B ...
- iOS---GCD的三种常见用法
1.一次性代码:dispatch_once 有时候,有些代码在程序中只要被执行一次. 整个程序运行过程中,只会执行一次. - (void)viewDidLoad { [super viewDidLoa ...
- 验证resneXt,densenet,mobilenet和SENet的特色结构
简介 图像分类对网络结构的要求,一个是精度,另一个是速度.这两个需求推动了网络结构的发展. resneXt:分组卷积,降低了网络参数个数. densenet:密集的跳连接. mobilenet:标准卷 ...
- 抓取出现时间3s后消失的元素
背景:日常自动化脚本编写中,可能需要定位,获取元素的位置,通常会遇到一种元素,只出现几秒,几秒后慢慢消失的,这个时候,如果要抓取这个提示,如果和它比手速,当你手速比较快,可以箭头抓取到,但当这个元素的 ...