2009-08-25 47 views
3

我想診斷爲什麼我的Outlook插件用C#/ VSTO 3.0/VS 2008編寫,安裝後沒有加載。我的VSTO 3.0 Outlook插件無法加載

該插件在我的開發計算機上運行良好,該計算機安裝了Visual Studio 2008。我不能期望我的所有用戶具有所有的先決條件,但這樣我通過這些步驟去寫一個安裝程序: http://msdn.microsoft.com/en-us/library/cc563937(loband).aspx

我安裝外接一個全新的Windows XP SP 2的計算機上使用全新安裝它安裝了所有的必備軟件(.NET 3.5,VSTO 3.0運行時,Windows Installer 3.1,2007 PIA)。 Outlook啓動,但加載項不運行。如果我轉到信任中心的加載項選項卡,我會在「非活動應用程序加載項」部分看到我的加載項,並顯示消息「未加載。加載COM加載項期間發生運行時錯誤「。

不知道如何找到具體的錯誤,所以我可以修復它。

reg鍵看起來沒問題。在HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Outlook \ Addins \ BlahAddin下,我看到Description,FriendlyName,LoadBehavior(設置爲3,直到它失敗後,如果設置爲2)和Manifest。

嘗試了VSTO_SUPPRESSDISPLAYALERTS環境變量技巧,然後從命令行啓動Outlook,但沒有輸出。

我有遠程調試或多或少的工作,但我不知道要尋找什麼。當我連接到Outlook時,我沒有看到我的DLL加載,但是再次可能是託管的DLL在VS中顯示的方式不同。

關於後續步驟的任何其他想法我可以按照以下步驟來生成我可以診斷的特定錯誤?

回答

3

解決了我的問題經過數週的痛苦。在安裝過程中,「Manifest」註冊表鍵在某些垃圾值被破壞。這是一個已知的Visual Studio bug,據說在Visual Studio 2008 SP 1中已經得到修復,但顯然不適合我。重命名項目名稱與插件名稱不同可解決問題。隨機,嗯?

2

確保您在Outlook調用的所有方法的頂層都有try-catch處理程序,並記錄您無法以某種方式處理的任何異常。將您的故障排除集中在方法如Startup方法和其他在初始化過程中調用的方法上。

+0

沒有幫助不幸。我的啓動/關閉方法非常貧瘠,我嘗試用try/catch塊來包裝它們。 – 2009-08-27 19:17:44

1

您可能想要使用遠程調試器進行調試。在您的測試機器上(與UNC路徑共享)分享您的開發人員計算機上的MSVCMON.EXE文件夾(位於程序文件的Visual Studio文件夾中),並在模塊中的調試器陷阱(.NET)異常下啓動Outlook;在你的方法中加入斷點。

如果您在安裝解決方案之前每次都需要清理測試計算機,則應該在虛擬PC 2007 VM(免費下載)下運行XP並在設置完所有內容後切換到差異HD,然後將其插入快照您的預安裝狀態一次,所以您不必在卸載/重新安裝時修改程序來修復錯誤。

您正在安裝Debug版本還是Release版本?也許一種風味有不同的要求。只是猜測。

-Mike [MSFT辦公室開發]

+0

始終在沒有任何狀態的乾淨虛擬機上進行安裝。 可以通過託管和非託管模式下的遠程調試附加到Outlook。加載過程中拋出異常,但很難解釋沒有mso.dll符號: 「0x7c81eb33(kernel32.dll)在OUTLOOK.EXE中的第一次機會異常:0x000006A6:綁定句柄無效。」 插件未加載時,安全模式下的類似異常。 無法在我的加載項中設置斷點(「斷點當前不會被命中,沒有符號將被加載到這個文檔中」),但是我的消息框沒有顯示意味着我在加載項之前得到了borked負載。 – 2009-08-27 19:30:09

1

在你的機器上,當您從Visual Studio中的插件,它應該創建在HKEY_CURRENT_USER \ SOFTWARE \微軟\ VSTO \安全\ {納入} SomeGuid註冊表項。確保這些註冊表設置也與您的插件一起部署。他們是讓你的代碼被信任的那些人。