2012-03-30 70 views
0

Office控制我剛剛建立了一個MS Outlook插件在使用Visual Studio和Office 2010。我已經安裝了它確定的4臺機器,而是一個用戶收到以下錯誤 -的Outlook插件未能找到ID

Error found in Custom UI XML of "...." 
... 
... 
Failed to find Office control by ID 

大家都在運行Windows 7和Outlook 2010 - 不知道爲什麼這個人有問題。任何人都可以建議如何診斷?

+1

是安裝有該用戶的機器上的任何其他otlook插件?以及如何在客戶端機器上運行vsto – 2012-03-30 07:44:04

回答

2

如果它適用於任何人,除一個用戶。正如@Brijesh Mishra所提到的,檢查用戶是否有其他插件,以及他是否擁有自定義的快速訪問工具欄。

如果他有任何的這個話,刪除其他加載項並嘗試安裝或重新快速訪問工具欄自定義。

0

爲我的實際修復是分離含有customUI並重定向到正確的在GetCustomUI方法例如在 (使用Office.IRibbonExtensibility實現)色帶XML文件:

public string GetCustomUI(string RibbonID) 
    { 
     switch (RibbonID) 
     { 
      case "Microsoft.Outlook.Mail.Read": 
       return GetResourceText("namespace.type1.xml"); 
      case "Microsoft.Outlook.Mail.Compose": 
       return return GetResourceText("namespace.type2.xml"); 
      default: 
       return null; 
     } 
    } 
3

對於那些具有類似的問題,你不必刪除任何加載項。 發生的事情是:Outlook將嘗試將所有功能區(在功能區xml中找到)加載到用戶轉到的任何窗口中。然後它會抱怨沒有找到ID x或y。

只要確保在Ribbon.cs您GetCustomUI方法不加載整個區XML一次,而是它裝載每個片段。

如果您不確定您需要定位哪些ID,請在GetCustomUI中使用斷點,然後啓動Outlook,瀏覽不同的視圖(主要,新電子郵件,新約會,日曆等)以收集ID對於需要向您展示加載項的視圖。

就我而言,我需要Microsoft.Outlook.ExplorerMicrosoft.Outlook.Mail.ComposeMicrosoft.Outlook.Appointment

所以我改變了我的GetCustomUI到:

public string GetCustomUI(string ribbonID) 
    { 
     switch (ribbonID) 
     { 
      case "Microsoft.Outlook.Explorer": 
       return GetResourceText("MyAddin.RibbonsForOutlookExplorer.xml"); 
      case "Microsoft.Outlook.Mail.Compose": 
       return GetResourceText("MyAddin.RibbonForOutlookMailCompose.xml"); 
      case "Microsoft.Outlook.Appointment": 
       return GetResourceText("MyAddin.RibbonForOutlookAppointment.xml"); 
      default: 
       return null; 
     } 
    } 

當然,我有我的Ribbon.xml分解爲上述三個XML文件。結果:Outlook將只加載給定屏幕(預約,新電子郵件...)所需的片段,並且不會抱怨「未在屏幕X或Y上找到ID」。

最後,對於那些爲什麼有些用戶得到這個錯誤,而其他人沒有誰不知道:這是因爲「顯示添加的用戶界面錯誤」選項(在選項 - >高級)。如果未選中,則Outlook將忽略格式錯誤的功能區XML錯誤。如果選中,用戶將得到有關您的加載項(如果存在)以及其他加載項的相關錯誤。

+0

優秀的答案,爲我節省了大量的頭痛。謝謝! – 2016-09-20 21:39:17

+0

有人會知道如何爲基於Designer的VSTO插件做到這一點?我能找到的所有答案都是關於XML插件的,但我繼承了基於Designer的設計。如果它是基於Designer的,我找不到任何/放置GetCustomUI()方法的地方。當我找到「無法通過ID找到Office控件」錯誤時,我會根據是在查看資源管理器還是Inspector視圖,爲其中一個選項卡或另一個選項卡獲取。但是在使用導致它的調試器時,我可以找到沒有錯誤。它仍然表示錯誤是用XML表示的,但它是用生成的XML,我認爲我從來沒有真正看到過。 – Bryan 2016-10-24 17:10:06

+0

這爲我修好了。謝謝!!! – thewindev 2017-02-14 11:48:55

相關問題