如何對無法載入的 VSTO 外掛進行故障排除?
我的 VSTO Outlook 載入項突然停止在一台客戶電腦上工作(它無法載入,沒有錯誤消息),我一直在進行故障排除。機器是 Windows 7 x86,Outlook 2007。載入項是用 Visual Studio 2008 編寫的,並使用帶有 2003 PIA 的 VSTO 2005(因為我們還需要支持 Outlook 2003)。它在其他機器上執行良好。
這是我試圖獲得有用的故障排除輸出的內容:
- 添加
VSTO_SUPPRESSDISPLAYALERTS環境變數(設置為0)。- 使用管理權限啟動 Outlook。
- 查看事件日誌。
沒有。載入項不會在沒有說明原因的情況下載入。我還檢查了“通常的嫌疑人”(CAS 策略、安裝的 PIA、系統資料庫中的 LoadBehavior、重新安裝 VSTO 和載入項)。
其他一些觀察:
LoadBehavior在系統資料庫中停留在3.- 該載入項在 Outlook 中顯示為“已禁用”。在“COM 載入項”中選中它的複選框什麼都不做(沒有錯誤,第二次輸入表單時復選框再次被清除)。
- 它在其他客戶機器上執行良好,在這台機器上執行良好。(不,客戶無法告訴我他的機器發生了什麼變化。)
- 我
Trace.WriteLine在程式碼的最頂部(ThisAddIn_Startup處理程序中的第一行)有一條消息,但沒有到達(我檢查了DebugView)。因此,不載入的原因不是我的載入項中的異常,而是 VSTO 載入載入項失敗或 Outlook 載入 VSTO 失敗。而不是更多的隨機調試(“試試這個……”,“試試那個……”),我真的很想強制 Outlook 和/或 VSTO 告訴我出了什麼問題,即給我一個有用的錯誤消息嘗試啟用載入項時什麼*都不做。*有任何想法嗎?
您是否嘗試再次啟用載入項?它在禁用隊列中後不會執行。從禁用的載入項螢幕重新啟用它後,您可以選中 COM-AddIn 螢幕中的框以載入它,然後應該提示您更多詳細資訊,因為您設置了
VSTO_SUPPRESSDISPLAYALERTS關於第一次可能發生的事情的變數地方。
下面是關於 RobertG5 解決方案的更多細節(評論太長了):
問題是該載入項已被Outlook硬禁用。據我所知,這與“通常的”不載入場景不同。實現這一點的關鍵是要注意外掛沒有出現在Inactive Application Add-Ins下,而是在Disabled Application Add-Ins下。這會有所不同:在後一種情況下,只需進入 COM-AddIn 螢幕並勾選複選框就不會執行任何操作。(我想一個很好的消息框“您無法載入此載入項,因為它已被硬禁用”會問太多……嘆息。)
那麼,如何重新啟用硬禁用的載入項?
- 在Manage框中,將COM Add-ins更改為Disabled Add-ins,然後點擊 Go。
- 選擇載入項並點擊啟用。點擊關閉。
好的,現在可以再次載入載入項:
- 在Manage框中,將Disabled Add-ins更改為COM Add-ins,然後點擊 Go。
- 選中已禁用載入項旁邊的複選框。點擊確定。