c# - 为什么这个自定义的 Word 后台 UI 不显示其用户界面?

标签 c# .net xml office-addins word-addins

我有一个 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 选项的“高级”选项卡中的“常规”部分下打开显示加载项用户界面错误,但据我所知,它没有向我显示任何错误。

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

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

编辑:我已经尝试了建议的答案,但鉴于该方法,它仍然无效。在这一点上,我和我的团队非常确信这是一个主要的 VSTO 错误,我们已经制定了一个项目来展示它。此项目展示了 Windows 10 Pro 64 位版本 1607(操作系统内部版本 14393.351)和 32 位 Word 2016 16.0.7426.1009(Office 2016 32 位版本 1610,内部版本 7466.2023) 的后台错误:https://github.com/Murdoctor/WordAddin1

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

enter image description here

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

enter image description here

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

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

最佳答案

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

  1. Word 中,点击文件打开后台。

  2. 点击更新选项下拉菜单。

  3. 选择立即更新

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

enter image description here

关于c# - 为什么这个自定义的 Word 后台 UI 不显示其用户界面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40431114/

相关文章:

c# - 替换页面的查询字符串

c# - XAML 绑定(bind)组

c# - 使用 Android 手机浏览器从 Asp.net 网站下载 .apk 时出错

java - 通过 Groovy 在 Java 中解析 XML

javascript - 没有 namespaceURI 的文档的 Document.evaluate 崩溃 Microsoft Edge

c# - .NET WinForm ComboBox - 如何改变 DropDown 行为

C#文本文件上传下载问题

.Net Compact Framework 滚动条 - 垂直显示时始终显示水平

c# - .NET:关于 AssemblyVersion,什么定义了二进制兼容性?

xml - xsl : Copy the entire xml except a parent node but keep its child node