2009-11-18 37 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

- =馬騰= -