关于本站
1、基于Django+Bootstrap开发
2、主要发表本人的技术原创博客
3、本站于 2015-12-01 开始建站
VSTO开发的插件十分娇气。动不动就被禁用或不能运行。
1)没有.NET框架?拜拜;
2)没有VSTO运行时?拜拜;
3)没有允许执行插件?拜拜;
4)代码导致运行出错了?拜拜。
还可能出现各种各样莫名奇妙的情况,导致VSTO插件直接不运行。
现罗列一些情况,提供排查问题的依据。
你也可看如下链接,里面的文章都是我之前开发一个Excel插件写的帮助文档。
VSTO是基于.NET开发的插件,所以需要.NET框架。而且该框架的版本最好和VSTO插件使用的框架一致。
例如,我在.NET框架4.0开发的VSTO插件。那么安装到其他电脑上使用,其他电脑也需要安装了.NET框架4.0。
若.NET框架版本不对,会提示错误:the manifest may not be valid or the file could not be opened.
另外,还需要安装VSTO Runtime(运行时)。该组件也是VSTO运行所需的组件。
还有一种特殊情况,有时还需要一个组件:Office PIA兼容包。
因为VSTO开发使用没将引用到的一些DLL文件设置好,导致客户端缺少相关文件。
Office PIA也是区分版本。和Office使用的版本一直,例如使用Office2010的,需要用Office 2010PIA。
这个开发的时候可以设置一个东西,就不需要安装Office PIA。
选择引用,设置如下:
VSTO插件还有一个令人恶心的地方。
若在执行代码的过程中发生错误,而且这里我们没有做任何错误处理。
这时候,除了系统报错之外,插件会自动被禁用。
下次打开Office,就看不到我们开发的插件。
我们可以告知用户如何恢复插件(在加载项,把插件启用)。
但我们最好防范于未然,把代码都加上错误处理。避免这种情况发生。
在多个Excel.exe进程的情况下,会导致第一次打开的Excel.exe有加载插件。其他的Excel.exe没有加载插件。
这种情况,可能发生在插件资源回收的问题。
在上一次关闭Excel文档,插件的资源回收不了,导致Excel.exe无法退出,继续运行。
资源回收问题可以参考:VSTO关闭文档再打开,不加载插件问题
另外也可能注册表设置Excel文档打开方式为新进程打开。
这个问题多半出现在用户为了解决“向程序发送命令时出现问题”,然后自己根据网上的文章随便修改注册表导致的。
这个问题,目前没有很好解决的方法。可以引导用户设置并处理。
上面提到插件被禁用的情况。有时发现重新启用插件还是没作用。
这种情况,多半是没有被信任。如下,提示尚未信任。
这个问题可以引导用户处理。
打开菜单:文件→选项→信任中心→信任中心设置,更改如下:
不勾选“要求受信任的发布者签署应用程序加载项”。
若你的VSTO插件涉及到vba工程的开发,还需要设置“信任对VBA工程对象模型的访问”。
这个是最令人恶心和无语的情况。某卫士可能会被插件当作木马并隔离。
这个提示用户,让用户手动恢复...
基本上,可能出现问题的是这些情况。对症下药即可。
可能有些情况没有提到,欢迎补充。
相关专题: VSTO的那些坑