关于VS2003插件的正确理解与使用

开发 后端
本文讲述如何使用VS2003插件,怎样使用VS2003插件。这些内容都是我今天花花了一周的时间查阅资料并像IT精英学习出来的,中间可能有不少错误是我没有挑出的,欢迎大家指正。

最近处理了好几个VS2003插件的问题,总结出一些经验,在此与大家分享一下。希望大家能够多多提出建议与意见,VS2003插件真的很让人头疼啊,下面就拿出来给诸位小看一下。

首先介绍一些注意点:

1. 一定要把宏安全级别设置为Medium以下,默认是High,肯定不允许运行任何Addin,这点一定要注意,否则再怎么改程序也是徒劳

2. 在开发Addin的机器上,建议仅安装一个版本的Office,否则可能因为引用的Office Library Reference混淆,导致在其他机器上无法正常加载

3. 如果你开发的是Office XP的Add-in,必须安装Office XP PIA (primary interop assemblies),这是对Office COM对象的封装库。

你可以到http://www.microsoft.com/downloads/details.aspx?familyid=C41BD61E-3060-4F71-A6B4-01FEBA508E52&displaylang=en下载。

4. 在创建Addin项目时一定要正确选择Office目标程序,如Word, Excel, Visio, PowerPoint等,如下图所示:

5. 在创建Addin向导的倒数第二步,通常情况下一定要将两个选项都选中,特别是第二个选项,否则可能由于不支持所有用户都运行,而出现未自动加载的情况

接下来是常见问题解答

问题1 在Office插件加载时,即使加载失败也不会有任何提示,如果出现Assembly加载错误,我该如何跟踪这些错误
我 们可以在.net自带的工具中找到一个叫做Assembly Binding Log Viewer的工具,通过它我们可以几乎所有的assembly加载异常。要注意的是,每个版本的.net都自带了一个相应版本的Assembly Binding Log Viewer,所以运行的时候要看一下调用的是哪个版本的。比如我们现在要调试基于.net 1.1开发的Office插件,可以通过以下步骤运行:

1. 点击 开始 > Microsoft Visual Studio .NET 2003 > Visual Studio .NET 工具 > Visual Studio .NET 2003 命令提示,

2. 在进入Visual Studio 2003命令行模式下,输入fuslogvw.exe

这时我们就可以看到该工具的界面了,如图:

有关该工具的详细信息可以看http://msdn2.microsoft.com/en-us/library/e74a18c4(vs.80).aspx

同样的,如果我们要启动.net 2.0的Assembly Binding Log Viewer就在VS2005的命令行下输入fuslogvw。

问题2 Visual Studio 2005开发的Office插件无法在Office中运行
这个问题可能是由于没有安装KB908002中提到的prerequisite造成的,可以去下面的地址下载该文档中提到的补丁:http://support.microsoft.com/kb/908002

安装完成后,我们可以在Add-in的安装项目的prerequisites中找到一个新的组件。

如上图所示,其中多了一个Shared Add-in Support Update for Microsoft .NET Framework 2.0 (KB908002)#t#

问题3 如何制作兼容多个版本Office的Office Addin
通 常情况下,我们编写的Add-in都是直接用向导生成的,且使用的是早期绑定技术(early binding)。但在许多需求中,我们需要制作一个能够兼容多个Office版本的Add-in,这时我们就不能使用早期绑定了,而应该使用后期绑定 (late binding)。关于早期绑定和后期绑定的详细信息,请见http://word.mvps.org/FAQs/InterDev/EarlyvsLateBinding.htm

问题4 通常Addin设置保存在注册表的什么位置
以Office 2003 Word Add-in为例,通常会保存在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Word\Addins中。
假设我们有一个名字为MyAddin1的Addin,那么它就会保存在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Word\Addins\MyAddin1.Connect中。

对于Excel Add-in来说,也是类似的,通常保存在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Excel\Addins中,依此类推。

在 每个Add-in的设置属性中有一个重要的标志LoadBehavior,这个属性是保存在XXXX.Connect中的,类型为DWORD,这个值直接 决定了Addin的启动模式,默认值为3表示Office应用程序一启动就运行,这个设置与我们在Addin向导中选择的"I would like my Add-in to load when the host application loads"是对应的。

问题5 当确定你的Add-in应该可以正确加载,但在启动时没有加载,这是怎么回事
如果一个Add-in因为某些原因在启动时加载失败, Office应用程序会自动把LoadBehavior改成8,这表示仅在需要加载时才加载该Add-in,而不是在Office启动时。所以这时可以到 与该Add-in对应的注册表项中检查一下LoadBehavior值是否正确,如果为8,一定把它改成3。

问题6 你不确定Add-in的哪一部分出了问题,该如何调试
首先必须确定assembly的引用没有出现问题,关于如何检测引用出错的情况已经在问题1中说明。

看来VS2003插件真的很苦闷啊!

责任编辑:chenqingxiang 来源: limmo(玄月)专栏
相关推荐

2009-11-25 13:35:05

VS2003使用

2009-11-27 10:35:04

VS2003部署项目

2009-11-26 10:02:06

2009-11-30 10:34:28

VS2003编译

2009-11-27 09:24:29

VS2003命令

2009-12-09 16:52:51

VS 2003插件

2009-11-27 13:55:50

VS2003显示行号

2009-11-26 08:57:01

VS2003发布

2009-11-27 08:59:29

VS2003配置文件

2009-12-15 13:39:43

2009-12-01 10:54:48

VS2003 英文版

2009-11-26 17:02:29

VS2003配置

2009-11-26 11:30:12

VS2003控件

2009-11-30 09:27:38

VS2003源代码

2009-11-27 14:09:44

VS2003模板

2009-12-01 16:32:20

VS2003安装步骤

2009-11-25 10:00:48

VS2003系统

2009-11-30 10:20:47

2009-11-30 09:10:40

VS2003断点无效

2009-11-30 11:05:19

VS2003 WebS
点赞
收藏

51CTO技术栈公众号