如何重新添加已删除的 VSTO 加载项
Posted
技术标签:
【中文标题】如何重新添加已删除的 VSTO 加载项【英文标题】:How to re-add a deleted VSTO Add-In 【发布时间】:2019-10-07 00:18:57 【问题描述】:我在一台机器上的 Word VSTO 插件有一个奇怪的问题,在该机器上运行 Visual Studio 项目会打开 Word,但据我所知并未尝试启动插件。
我到这一步是因为我不小心在管理 COM 加载项页面上为加载项单击了删除,而不是在失败后重新启用它。
我想知道如何重新启用已删除的加载项 - 我在想也许我需要删除某个注册表项。
当我从 Visual Studio 运行项目时,它不会尝试 完全启动,Word 立即启动,没有“失败” 输入暂停。 ThisAddIn_Startup 中没有遇到断点。 在 Word 中:文件/选项/加载项 - 加载项不会出现在非活动或禁用的加载项下 Word : Manage COM Add-ins Go... 没有出现。 Word : Manage Disabled Items Go... 为空。我尝试安装和卸载已发布的版本,看看是否会唤醒任何东西,并且我尝试更改 VS 项目的路径,以防万一(以及各种重新启动、清理、重建) ,从 git 等本地删除和重新克隆),但我找不到让它再次工作的方法。在另一台机器上,从 Git 克隆加载项并在 Visual Studio 中打开它,一切正常。
我尝试通过 COM 加载项上的选择 DLL(或选择 .)对话框重新添加,但我选择的所有加载项似乎都不是有效的加载项。
任何帮助弄清楚如何回到工作开发环境的帮助将不胜感激。
编辑 下面发生了很多事情 - 所以我想我会澄清一下,成功的解决方案是 Office 的在线修复
【问题讨论】:
您是否尝试增加发布版本(在 Visual Studio 中,项目属性页,选项卡发布)? 如果你运行Build/Clean Solution
然后Build/Rebuild solution
会发生什么?这通常有助于“为我解决问题*...
我已经尝试过清理和重建(连同删除所有并重新克隆)。发布版本更改也没有帮助。我还尝试更改 csproj 文件中的 projectguid,但同样没有帮助...奇怪)
在线维修对我不起作用。到目前为止,对我有用的唯一解决方法是更改大会名称。显然,这在生产中是不可行的......这个按钮不应该存在(事实:它不适用于 Excel COM 加载项!)。对于任何有同样问题的人,我在这里提供进一步的尝试:***.com/questions/57098810/…
【参考方案1】:
我认为您需要更改 VSTO 加载项的版本才能对其进行更新或重新安装。一旦加载项版本被禁用,这是永久性的。
详情请参阅Uninstall MS Word Add-in。让我知道这是否有效。
【讨论】:
按照链接文章中的步骤,它成功安装了插件,并在从桌面执行时在 Word 中运行。但是,从 VS(2017 或 2019)运行时,它不显示加载项,或遇到任何启动断点 您在 Visual Studio 中看到类似禁用的断点吗?在调试中运行时,Visual Studio 可能没有看到正确的代码。尝试手动删除 bin 和 obj 文件夹,然后重建。这有时可以解决这类问题。 它们没有被禁用。即使在运行时,它们也是纯红色断点。删除 bin 和 obj 无济于事:我刚刚重新测试过,但我之前删除了项目并从 git 重新克隆,这会做同样的事情 不确定是什么问题。试试***.com/questions/39565293/… 或***.com/questions/7020624/… 或***.com/questions/3551413/…【参考方案2】:注册表中的LoadBehaviour
是什么?应该是3
...
要找出答案,请查看
32 位 Word => Root\Software\Microsoft\Office\Word\Addins\插件 ID 64 位 Word => Root\Software\Wow6432Node\Microsoft\Office\Word\Addins\加载项 ID其中 Root 是 HKEY_CURRENT_USER 或 HKEY_LOCAL_MACHINE,具体取决于插件是为当前用户还是所有人安装。
如果LoadBehaviour
的值不是3
,则将其更改为3
并重新启动Word。
这是有关它的 Microsoft 文档:Registry entries for VSTO Add-ins
如果仍然无法正常工作,请尝试重新启用,因为它可能被硬禁用:
在管理框中,将COM Add-ins更改为Disabled Add-ins,然后点击Go . 选择加载项并单击启用。点击关闭。现在可以再次加载加载项... 回到管理框,将Disabled Add-ins更改为COM Add-ins,然后点击Go em>。 选中已禁用加载项旁边的复选框。点击确定。这是有关它的 Microsoft 文档:How to: Re-enable a VSTO Add-in that has been disabled
另外,如果您还没有这样做,则值得将 VSTO_SUPPRESSDISPLAYALERTS
设置为 0
,如本页所述:How do I enable VSTO error / display alerts?
如果以上都没有帮助,那么值得从添加或删除程序中对Office进行在线修复。
【讨论】:
Loadbehaviour 是 3。一直都是。这是其中最奇怪的部分! 它不会出现在禁用加载项或管理 Com 加载项屏幕中(根据问题描述),因此无法应用这些步骤。我现在试试显示警报。 Computer\HKEY_CURRENT_USER\Software\Microsoft\Office\Word\Addins\HB_Toolbar 在其他 3 个潜在位置不存在 @Andiih - 如果没有其他帮助 - 从添加/删除程序中进行 Office 修复...选择完整/在线的。 VSTO_SUPPRESSDISPLAYALERTS 设置为 0 时不显示任何警报。这是有道理的,因为我认为实际上没有任何东西在尝试启动/安装它。【参考方案3】:当事情没有按预期工作时,我不得不采取的最极端的步骤是清除注册表或文件系统中的 VSTA 缓存。请注意,我使用附加到文档的基于模板的customizations
,而不是始终存在的加载项,因此这可能不适用于您。或者可能确实如此,我不知道。
注册表
在 HKCU:\Software\Microsoft\VSTA\Solutions 下为您的加载项查找条目。我为此使用 PowerShell,示例命令链如下所示:
gci "HKCU:\Software\Microsoft\VSTA\Solutions"
Hive: HKEY_CURRENT_USER\Software\Microsoft\VSTA\Solutions
Name Property
---- --------
1234abcd-1234-abcd-1234-abcd12 Url : file:///Z:/path/to/your/addin.vsto
34abcd SubscriptionID : addin.vsto, Culture=neutral, PublicKeyToken=<removed>, processorArchitecture=msil
ApplicationID : file:///Z:/path/to/your/addin.vsto#addin.vsto, Version=<removed>, Culture=neutral,
PublicKeyToken=<removed>, processorArchitecture=msil/addin.dll, Version=<removed>, Culture=neutral, PublicKeyToken=<removed>,
processorArchitecture=msil, type=win32
ProductName : addin
LastCheckedTime : 4, 201, 185, 1...
UpdateEnabled : 1
UpdateInterval : 1
UpdateIntervalUnits : days
remove-item "HKCU:\Software\Microsoft\VSTA\Solutions\1234abcd-1234-abcd-1234-abcd1234abcd"
文件系统
我的自定义设置(请参阅开头的注释)安装在%localappdata%\Apps\2.0
,在极少数情况下我需要手动删除它们。清除这个不那么简单,但通常有一个匿名文件夹,如ABCDEFG0.QWE
。我只是删除了它,连同它的另一半,我从来没有遇到过我无法解决的问题。仅供参考,如果您有多个部署,这可能会卸载所有部署。我不经常这样做,所以我不是 100% 熟悉这个领域的工作原理,但我从来没有因为这样做而变得更糟。
我不知道这对于可以安装到 Program Files 的应用程序级插件有什么不同(如果有的话)。
编辑:添加一些相关链接。
How do I completely uninstall a ClickOnce application from my computer?
Clear the .NET-downloaded application cache without Mage?
【讨论】:
HKCU:\Software\Microsoft\VSTA\ 下没有任何内容 - 我猜 COM 插件并不存在于那里。我尝试清除注册表中其他地方可以找到的所有内容,但没有成功让它从 VS 运行 @Andiih 您的加载项是否为所有用户安装,和/或从 Program Files 文件夹安装?如果是这样,请尝试使用 HKLM。您可能需要进行一些注册表搜索,该文件夹可能不完全相同。 IE。 WOW6432Node 可能会把事情搞砸。 通过添加名称、路径等,完成了很多注册表搜索。请注意上面缺乏进展。以上是关于如何重新添加已删除的 VSTO 加载项的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 VS 2012 创建 (VSTO) Office 2007 加载项?
来自 shapesheet 用户操作的 Visio VSTO 加载项 QueueMarker 事件,添加一个形状但在重做时获得两个形状
如何在 Excel VSTO 加载项中为 OnUndo 调用 C# 方法?