2009-11-18 38 views
0

我们有一个WinForms应用程序,我们必须使用COM来与Excel和/或PowerPoint进行接口(我知道,COM对象是一个主要的麻烦, d喜欢不必使用它们,但至少现在我们别无选择)。使用安装了VSTO COM插件的系统上的Office COM对象冲突

一些将运行此应用程序的机器还在Excel和/或PowerPoint 2007中安装了自定义VSTO COM加载项。此加载项可以正常工作,它在Office应用程序启动时加载,不会崩溃,并且似乎具有足够的异常处理。这个VSTO插件是由我们公司开发的,所以我们有源代码可以根据需要进行更改。

当代码中声明WinForms应用程序中的COM对象时,就会出现问题。一旦与该对象建立连接,无论哪个Office应用程序正在连接(Excel或PowerPoint),都会引发一个模糊的错误,通常是RPC服务器不可用。

我们发现,如果我们只是在Excel/PowerPoint中禁用VSTO加载项,问题就会消失。显然,VSTO加载项在启动时执行,但我们无法在VSTO加载项中找到任何会导致Excel/PowerPoint发出错误的异常。

因此,为了解决问题,我们可以在与COM对象建立连接之前以编程方式禁用任何活动加载项,然后在完成时重新启用。但如果可能的话,我们更希望能够以正确的方式解决问题。

我意识到这可能是一个利基领域,通过代码在一个单独的应用程序中混合VSTO加载项和COM对象,但我们希望我们缺少一个明显的解决方案。

回答

-1

我读到这个的方式是,COM对象实际上是“劫持”了外挂程序使用的活动连接,并最终关闭了它,并留下了孤立连接的外接程序。由于代码和错误都不包含在问题中,所以很难解决真正的问题。

为了解决您的问题,我建议将您的问题张贴在与VSTO相关的MSDN论坛上,因为这由VSTO团队主动监控。不要犹豫,以添加更多可用于解决问题的信息(代码,错误消息)。

http://social.msdn.microsoft.com/Forums/en-US/vsto/threads

- =马腾= -