對於那些具有類似的問題,你不必刪除任何加載項。 發生的事情是:Outlook將嘗試將所有功能區(在功能區xml中找到)加載到用戶轉到的任何窗口中。然後它會抱怨沒有找到ID x或y。
只要確保在Ribbon.cs您GetCustomUI方法不加載整個區XML一次,而是它裝載每個片段。
如果您不確定您需要定位哪些ID,請在GetCustomUI中使用斷點,然後啓動Outlook,瀏覽不同的視圖(主要,新電子郵件,新約會,日曆等)以收集ID對於需要向您展示加載項的視圖。
就我而言,我需要Microsoft.Outlook.Explorer,Microsoft.Outlook.Mail.Compose和Microsoft.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錯誤。如果選中,用戶將得到有關您的加載項(如果存在)以及其他加載項的相關錯誤。
是安裝有該用戶的機器上的任何其他otlook插件?以及如何在客戶端機器上運行vsto – 2012-03-30 07:44:04