Outlook插件无法按ID查找Office控件

Cra*_*rze 2 outlook vsto add-in

我刚刚使用Visual Studio和Office 2010构建了一个MS Outlook Add In.我已经在4台计算机上安装了它,但是一个用户收到以下错误 -

Error found in Custom UI XML of "...."
...
...
Failed to find Office control by ID
Run Code Online (Sandbox Code Playgroud)

每个人都在运行Windows 7和Outlook 2010 - 不确定这个人为什么会遇到问题.谁能建议如何诊断这个?

小智 9

对于那些有类似问题的人,您不必删除任何加载项.发生的事情是:Outlook将尝试将所有色带(在功能区xml中找到)加载到用户前往的任何窗口中.然后它会抱怨找不到ID x或y.

只需确保Ribbon.cs中的GetCustomUI方法不会立即加载整个功能区XML,而是按片段加载它.

如果您不确定需要定位哪些ID,请在GetCustomUI中使用断点然后启动Outlook,浏览不同的视图(主要,新电子邮件,新约会,日历......等)以收集视图的ID你需要向你显示加载项.

就我而言,我需要Microsoft.Outlook.Explorer,Microsoft.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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

当然,我必须将我的Ribbon.xml分解为上面提到的三个XML文件.结果:Outlook将仅加载给定屏幕所需的片段(约会,新电子邮件...),并且不会抱怨"未在屏幕X或Y上找到ID".

最后,对于那些不确定某些用户为何会收到该错误而其他用户没有收到错误的人:这是因为"显示加载项用户界面错误"选项(在选项 - >高级中).如果未选中,则Outlook将忽略格式错误的XML错误.如果选中,用户将收到有关您的加载项(如果存在)以及其他加载项的相关错误.