我們有一個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對象,但我們希望我們缺少一個明顯的解決方案。