Excel 2007教程:加载宏的改进

发布: 2009-2-16 09:41  作者: 网络转载  查看: 2799次 共有0条评论

:加载宏的改进

  今天,我们发表两篇客串帖子中的第二篇,来自Patrick Smith, 程

序开发小组的程序经理。

  概述和背景

  代码在为Office成品编写的加载宏里变得越来越流行了。Visual Studio

Tools Office (VSTO)下个版本和Office 2007大概在同一时间段上市。

VSTO的下个版本增加了对在应用级创建加载宏的支持。自从Office 2003开

始,代码的更好支持的需求就已经清楚了,但是,运行代码时会有一些挑战。在

这些挑战中有安全,恢复,管理和隔离。这些挑战中的大多数都是由于加载宏基

于mscoree.dll而导致,mscoree.dll是缺省的VS.Net加载宏模板使用的加载器。

  有些工作区域是针对这些障碍的,例如创建一个单独的“shim”来代替

mscoree.dll,我们想要让Office 2007系统中的这个过程变得更好一些。我们正

是那样做的!

  改进

  作为一名开发者,你现在可以使用VSTO新版本提供的AddinLoader来设计你

的加载宏了。在Office里运行代码时,新的AddinLoader帮助克服那些历史挑战

  • 安全模式——Office系统2003产品架构里的所有加载宏的安全决定都是基

于mscoree.dll,它是不可签名的。正因为该安全模式,加载宏本身不可签名,

而Office产品也不会知道,因为它只看mscoree.dll,并且,因为只看

mscoree.dll,所以当Office应用软件设置安全性为高时,没有加载宏可以运行

。现在,如果加载宏是基于AddinLoader的话,那么Office 2007系统就能够区别

.NET安全模式,为加载宏决定安全性。只有使用AddinLoader,这才是可能的。

  • 恢复模式——Office 2003系统的产品会自动禁用加载失败的加载宏,因

此,就可以避免该加载宏以后的问题,然而,因为该加载宏实际上是被看作

mscoree.dll的,mscoree.dll是被禁用的加载宏,而不是实际上导致该问题的

COM加载宏。这就会防止任何基于mscoree.dll的加载宏加载,因为加载器本身被

禁用了。现在,看的是加载宏而不是加载器,具体有错误行为的加载宏被禁用,

而不是加载器被禁用。

  • 管理——当查看加载宏对话框时,mscoree.dll就会被看作是加载宏名称

,而不是实际在mscoree.dll里运行的COM加载宏。一旦你在运行多个加载宏,就

很难辨别哪个是哪个了。现在,显示的是实际的加载宏的名称了。

  • 运行时间隔离——mscoree.dll将所有加载宏加载到默认的AppDomain。因

此,没有内存隔离,加载宏可以相互步入,影响加载宏之间共享的对象。新的

AddinLoader将给每个加载宏使用独立的AppDomains,因此,实现了对该加载宏

的隔离。

  需要什么

  为了利用这些新的改进,你将需要使用VSTO新版本(这里有篇对该版本的技

术概述)来创建你的加载宏。

  另外,你需要确保在加载宏加载的机器上有下述配置可用:

  • Common Language Runtime 2.0或以上版本

  • VSTO Runtime(来自VSTO的新版本)

  • CAS政策给加载宏充分信任

  所有这些前提条件都可以从你在VSTO里创建的加载宏的安装工程里配置。

 

相关阅读
大家对 Excel 2007教程:加载宏的改进 的评论
最新PPT教程
最新评论
PPT问答