C# 功能区选项卡即使在卸载PowerPoint加载项后仍然存在

C# 功能区选项卡即使在卸载PowerPoint加载项后仍然存在,c#,vsto,powerpoint-2010,comaddin,powerpoint-2013,C#,Vsto,Powerpoint 2010,Comaddin,Powerpoint 2013,我已经使用C#VSTO为PowerPoint 2010/2013创建了一个应用程序级加载项。外接程序是从msi安装程序文件安装的 问题是,从控制面板卸载外接程序并打开新的PowerPoint演示文稿后,功能区选项卡仍然可见,所有功能都正常工作 要删除选项卡,我必须执行以下两项操作之一: 从PowerPoint“开发人员”选项卡的COM加载项列表中删除加载项 从任务管理器结束正在运行的PowerPoint实例 我已经调用了dispose方法(在ThisAddIn_Shutdown方法中),用于我在

我已经使用C#VSTO为PowerPoint 2010/2013创建了一个应用程序级加载项。外接程序是从msi安装程序文件安装的

问题是,从控制面板卸载外接程序并打开新的PowerPoint演示文稿后,功能区选项卡仍然可见,所有功能都正常工作

要删除选项卡,我必须执行以下两项操作之一:

  • 从PowerPoint“开发人员”选项卡的COM加载项列表中删除加载项
  • 从任务管理器结束正在运行的PowerPoint实例
  • 我已经调用了dispose方法(在ThisAddIn_Shutdown方法中),用于我在ThisAddIn_启动方法中所做的所有初始化,但这没有帮助

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
            this.Application.WindowSelectionChange -= Application_WindowSelectionChange;
            this.Application.SlideSelectionChanged -= Application_SlideSelectionChanged;
            this.Application.SlideShowBegin -= Application_SlideShowBegin;
            this.Application.SlideShowEnd -= Application_SlideShowEnd;          
        }
    
    我错过什么了吗

    欢迎任何帮助。
    谢谢

    终于找到了原因。这是由于在Ribbon.Designer.cs文件的InitializeComponent()方法中编写了几行自定义代码造成的


    删除该代码后,问题就解决了。

    卸载插件时PowerPoint是否正在运行,或者在安装插件后启动PowerPoint时,插件是否仍在运行?如果我没有弄错的话,功能区将在所有PowerPoint窗口(即所有演示文稿)中共享。因此,只要已加载,则在退出当前PowerPoint实例之前不会卸载它。即使我关闭PowerPoint的当前实例,然后卸载,如果我再次打开新演示文稿,我也可以看到该选项卡。同时,一次只有一个活动的PowerPoint演示文稿。您是使用RibbonX修改功能区,还是使用旧的命令栏(将工具栏/按钮放在功能区的“加载项”选项卡上)创建UI?如果是后者,则需要在加载项卸载时显式删除它们。在注册表中搜索加载项的另一个条目并删除它们。Powerpoint 2010通常以HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Office\Powerpoint\Addins和HKEY\U CURRENT\U USER\SOFTWARE\Microsoft\Office\Powerpoint的形式出现\Addins@SteveRindsberg-嗨,史蒂夫,实际上我正在使用Ribbon(视觉设计师)模板创建Ribbon。你能告诉我你做了哪些更改吗,因为我遇到了同样的问题,你必须确保代码中使用的所有变量都得到了正确的处理。在我的例子中,我使用的是PowerPoint的Application Version属性,但由于我在Ribbon.Designer.cs文件的InitializeComponent()方法中使用了该属性,因此未正确处理该属性。我们花了很多时间来解决这个问题,从零开始,再弄清楚这个问题是在开发过程中的什么时候产生的。