共享外接程序和VSTO应用程序级外接程序之间的相同点有:
1.
它们都是注册在宿主应用程序的注册表键值中的,比如HKCU\Software\Microsoft\Office\Word\Addins.
这些外接程序被Office
加载后,都会出现在COM Add-in
对话框。
2.
基于COM接口上编译它们。这些外接程序通过利用Office对象模型来进行Office的延伸。可以想Office应用程序添加可扩展性的界面,比如自定义任务窗格,
功能区,Outlook窗体区域。
因为在共享外接程序和VSTO应用程序级外接程序之间有很多的不同点,所以我们仅列出其中的关键点。
1.
正如名字所提示的,一个共享外接程序可以被很多不同的Office应用程序所共享。所以,共享外接程序需要额外的代码分辨宿主应用程序。
然而在VSTO外接程序中,一个外接程序只能服务一个宿主应用程序。所以,在我们的外接程序中,我们正在工作的是强类型的宿主应用程序。我们再也不需要把这个应用程序对象转换为另外的,
或者用晚绑定来调用它的方法。
2.
为了在共享外接程序中建立可扩展性的界面,比如功能区,自定义任务窗格和Outlook窗体区域,
开发人员须实现三个接口: Office.IRibbonExtensibility,Office.ICustomTaskPaneConsumer,Outlook.FormRegionStartup。无论建立那种可扩展性的界面,都需要手动地写大量的代码。然而,如果用VSTO,这些工作都被封装起来了。我们仅需要想项目添加一个新的Ribbon,UserControl,或者FromRegion
条目,这是因为现在支持在VSTO的设计器中设计这三种用户界面。我们所需要做的就是拖拽控件,设置属性,像在Windows窗体设计器右击产生事件处理程序。
3.
另外一个重要的不同点就是模型的安全性。对于IDTExtensibility2
共享外接程序,一直以来都没有拥有任何的代码访问安全性策略这种需求。所以,在Office加载共享外接程序时,我们没有必要调用caspol.exe 为外接程序的程序集授予完全信任权限。对于VSTO,直到版本2008,我们都用的是.NET安全性策略。然而,VSTO
2008 用的是ClickOnce部署和验证码模型。
4.
VSTO建立一个新的应用程序域用来加载一个VSTO外接程序。所以,它们相互都不会影响。开发人员没有必要担心
“Outlook
不会关闭”的问题。当VSTO
外接程序关闭时,相应的应用程序域也会卸载,同时回收分配应用程序使用的资源。
5.
VSTO外接程序默认是被安装到HKCU (单个用户)下的,但是共享外接程序可以被部署到HKLM。所以,如果我们想要把VSTO外接程序部署给所有的用户,我们须做一些额外的手动工作。更多的信息,请参考:http://blogs.msdn.com/mshneer/archive/2008/04/24/deploying-your-vsto-add-in-to-all-users-part-iii.aspx。
相关的论坛帖子:http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/3f97705a-6052-4296-a10a-bfa3a39ab4e7/。
更多的有关VSTO的FAQ请看:
http://social.msdn.microsoft.com/Forums/zh-CN/vstudiozhchs/thread/ed10f3de-40bb-4f16-81f9-25ace1f152ba
如果您对我们的论坛在线支持服务有任何的意见或建议,请通过
邮件告诉我们