|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 liucqa 于 2013-7-29 14:30 编辑
SharedAdd和VSTO两者很多人都弄不清楚,他俩既有相同的地方也有不同点,关于这一点Cindy Meister大神有详尽的比较,异同点有:
相同点:
他们都会在操作系统的注册表中进行注册,比如对于Excel应用程序来说,会在HKCU\Software\Microsoft\Office\Excel\Addins这个下面创建注册表项,当应用程序比如Excel加载时,会逐一加载这个下面注册的插件.这些插件在COM加载项中可以进行集中管理。
他们都在Office Com接口上面通过Office对象模型进行构建,他们都可以将建一些可扩展的UI,比如用户自定义任务面板(Custom task panel),Ribbon菜单等。
不同点:他们也有很多不同点,主要不同点如下:
从名字可以看出Shared Add-In可以在多个不同的Office应用程序之间,比如Excel,Word中共享。因此在Shared Add-in中需要一些判断和处理不同宿主程序的代码。但是VSTO Add-Ins则是应用程序明确的。VSTO Add-Ins只能用在一种宿主应用程序中如Excel或者Word中运行,因此不需要在代码中处理对不同的宿主应用程序的类型做特殊的处理,比如将通用的对象转换为特定的对象,通过反射等调用不同应用程序的方法等。
要在Shared Add-In中创建特殊的UI界面,如Ribbon菜单,Custom Task Panel以及Form窗体等,需要实现office.dll中的三个接口:Office.IRibbonExtensibility,Office.ICustomTaskPanelConsumer及Outlook.FormRegionStartup接口。不论是创建的是以上哪种类型的UI界面,我们都需要在接口方法中编写很多处理代码。但是,如果使用Visual Studio Tools for Office,这些东西VSTO都帮我们包装好了,我们只需要从工具箱中往界面上拖动添加新的Ribbon菜单,UserControl,及FormRegion即可。这些界面在Visual Studio中都提供了设计时支持,我们只需要拖动,设置熟悉,双击然后处理绑定的事件即可,就象设计Windows Form应用程序一样简单。
还有一个重要的区别是安全模型。对于SharedAddin的IDTExtensibility2接口来说,从来不需要代码的安全访问机制(CAS),因此,在Office加载SharedAddin的时候,不需要调用caspol.exe方法来为Addin的程序集授予完全信任的权限。在VSTO中,2008版本中使用了.NET的安全策略,但是VSTO 2008使用了ClickOne部署以及真实代码模型(Authenticode)
VSTO为每一个VSTO Add-Ins创建了一个AppDomain,因此各个Addin之间互不影响,开发者不需要担心一些诸如“Outlook关闭不了”的问题。当写在VSTO Addin的时候,AppDomian也会被卸载,CLR会卸载与其相关的所有资源。
VSTO默认安装在HKCU(Current User)下面,而SharedAddin则默认部署到HKLM(Local Machine)下面。如果想让我们开发的VSTO Addin能让所有人使用,则需要在部署的时候对注册表进行一些额外的手动读写操作
http://www.cnblogs.com/yangecnu/p/Excel-Develpment-Introduction.html
|
|