为啥这个 Word 的自定义后台 UI 不显示其用户界面?

Posted

技术标签:

【中文标题】为啥这个 Word 的自定义后台 UI 不显示其用户界面?【英文标题】:Why is this custom backstage UI for Word not displaying its user interface?为什么这个 Word 的自定义后台 UI 不显示其用户界面? 【发布时间】:2017-03-18 18:51:29 【问题描述】:

我有一个 Office 插件,它使用以下后台 XML 将自定义 UI 元素添加到 Microsoft Word 后台:

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
  <backstage onShow="Backstage_OnShow">
    <tab idMso="TabSave">
      <firstColumn>
        <taskFormGroup idMso="SaveGroup">
          <category idMso="Save">
            <task id="myCustomTask" label="My Custom Task" insertAfterMso="ButtonTaskDynamicServiceProvider">
              <group id="myGroupInTabSave" label="Custom functionality" helperText="This group contains custom functionality.">
                <primaryItem>
                  <button id="myButton" label="My Button" onAction="CallMe" />
                </primaryItem>
              </group>
            </task>
          </category>
        </taskFormGroup>
      </firstColumn>
    </tab>
  </backstage>
</customUI>

这是here 描述的用于修改“另存为”对话框的确切基本情况。

在我的机器上,它在“另存为”下没有显示任何内容。但是,我确实看到在显示后台时会调用以下函数:

public void Backstage_OnShow(object contextObject) 
    // It hits this method.

UI 不显示的一些原因是什么,以及如何调试这里发生的事情?我尝试在“常规”部分下的“Word 选项”的“高级”选项卡中打开 Show add-in user interface errors,但据我所知,它没有向我显示任何错误。

不确定是否有帮助,但我们的功能区继承了 IRibbonExtensibility

我们还发现这种逻辑有时适用于某些机器,但不适用于其他机器。我不知道为什么...我可以告诉你的绝对不同的一件事是,此插件的类型是使用regasm 注册的,而不是使用 Outlook 注册表下的 path|vstolocal 注册表项安装的插件。换句话说,我们使用regasm 来安装插件。

编辑:我已经尝试了建议的答案,但考虑到这种方法仍然无法正常工作。在这一点上,我和我的团队非常确信这是一个主要的 VSTO 错误,我们已经制作了一个项目来展示它。该项目展示了 Windows 10 Pro 64 位版本 1607(OS build 14393.351)和 32 位 Word 2016 16.0.7426.1009(Office 2016 32 位版本 1610,build 7466.2023)的后台错误:@987654322 @

如果您在相同或相似的环境中运行此示例,您可以看到,如果您单击 Word 顶部的“主页”选项卡,您将看到在 https://github.com/Murdoctor/WordAddin1/blob/master/WordAddIn1/Ribbon1.xml 中定义的按钮,但是,如果您打开在后台您看不到应该在信息选项卡之后插入的示例选项卡,TabInfo(此屏幕截图是直接从 Visual Studio 以调试模式运行的发布版本拍摄的,我可以看到插件已注册并且一切都好):

您将看到的唯一内容是(这也是插件正在运行并已注册到其本地 VSTO 文件的证明):

编辑:这也会影响 Office 64 位。我刚刚安装了 Word 2016 16.0.7426.1009(Office 2016 64 位版本 1610,内部版本 7466.2023),认为更改为 x64 可能会有所帮助,但我的机器上仍然遇到同样的问题。

编辑:这也会影响今天发布的 Windows 10 Pro x64 版本 1607,内部版本 14393.447。另外,我试过禁用所有其他插件,还是一样。

【问题讨论】:

我不确定这是否是您遇到的问题,但您没有说您已注册功能区。创建 XML 功能区时,应覆盖 CreateRibbonExtensibilityObject 并返回功能区实例。 你定义的元素不是TabInfo元素,它们是Sample标签的元素,插入TabInfo之后并正确显示。 @RezaAghaei 我在后台的任何地方都看不到它。例如,你所看到的,我相当肯定我没有。你如何导航到它? 对我来说,它是在TabInfo 之后插入的。见image 由于您使用的是 .NET 4.5.2 和不同版本的 office interops 并且密钥文件受密码保护,因此我刚刚创建了一个干净的项目并使用了您提供的 XML。 【参考方案1】:

这是 Office 的一个错误。我可以在我的环境中确认,在使用昨天发布的 November 8 update 手动更新 Word 后,这再次起作用。当我尝试在 Windows 10 中搜索更新时,此更新未显示,而是我必须以这种方式安装它:

    Word里面,点击File打开后台。

    点击更新选项下拉菜单。

    选择立即更新

一旦您更新到 Office 版本 1610,内部版本 7466.2038,此错误就会消失

【讨论】:

以上是关于为啥这个 Word 的自定义后台 UI 不显示其用户界面?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的自定义 Google 地图图标在 PC 浏览器中显示,但在 Android 浏览器中不显示?

为啥具有“用户”范围级别的自定义维度未显示在我的报告中?

为啥word里面的图片有时候显示不出来

为啥我的自定义 UITableViewCell 没有显示?

为啥我的自定义 UITableViewcell 没有显示?

为啥word里的图片显示不全啊?