问题标签 [add-in]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9917 浏览

wix - 如何使用 WiX 部署 VSTO 3.0 插件?

我想部署我用 Visual Studio 2008 编写的 VSTO 3 Application Level Word 2007 插件。我看到 WiX 有一个名为 WixOfficeExtension 的扩展,看起来它可能具有此功能,但我找不到任何文档,我无法从源代码中辨别出它的目的。

以前有没有人尝试过这个,你能成功地完成它吗?

0 投票
3 回答
595 浏览

c# - 扩展 Visual Studio 编辑器

我正在编写一个用于扩展 Visual Studio 2008 的加载项(添加自定义功能)。在这样做时,我遇到了一种情况,如果我可以通过工具提示为任何代码行提供自定义消息,那将是一件好事。

执行此 IMO 需要访问 VS 编辑器控件并通过某种方式显示相应的工具提示。这也可以像鼠标悬停时提供工具提示消息的断点一样可视化。

这种实现可能吗?如果是,那该怎么走?如果不是,你建议什么类似的方式?

0 投票
4 回答
7240 浏览

c# - 如何从单独的 C# 项目调用 VSTO AddIn 方法?

我有一个 C# Excel 插件项目“MyExcelAddIn”,它有一个公共方法 Foo() 来做一些复杂的事情。出于测试目的,加载项还定义了一个工具栏按钮,该按钮连接到 Foo(),因此我可以对此进行测试并验证单击该按钮是否调用 Foo() 并执行我希望它执行的操作。这可以。

现在我想从 C# Windows 窗体项目中调用此方法。在 Windows 窗体项目中,我可以创建一个 Excel 实例并使其可见并验证我的 VSTO 加载项是否正在运行,因为我可以看到该按钮并且它工作正常。但我不知道如何从 Windows 窗体项目中以编程方式调用 Foo()。我用谷歌搜索了一下,得到了“MyExcelAddIn”COMAddIn 对象,但不知道如何调用 Foo()。

它看起来像这样:

所以我想知道如何从我的 Windows 窗体应用程序中调用 Foo()。请注意,我可以完全控制 Windows 窗体应用程序和加载项,并且我怀疑我必须对它们进行更改(尤其是加载项),但我不知道如何执行此操作。

请注意,这是一个 VS2008 C# 应用程序,我使用的是 Excel 2003。

0 投票
5 回答
44424 浏览

exception - 什么会导致 Outlook 将 COM 插件的 LoadBehavior 更改为 2 - 除了未处理的异常?

几个星期以来,我们一直在与一个问题作斗争,即在少数客户中,我们的 Outlook 插件由于尚未确定的原因而被卸载和禁用。“禁用”是指 Outlook 将以下注册表值从 3 更改为 2,这实际上意味着下次启动时不会加载插件:

HKEY_LOCAL_MACHINE\Software\Microsoft\Office\Outlook\Addins\[OurAddin.sProgID]\LoadBehavior

没有错误消息,也没有任何异常出现在我们的插件自己生成的日志文件中。

我已经找到了专门处理 LoadBehavior 更改问题的以下页面:http: //blogs.msdn.com/vsod/archive/2008/04/22/Troubleshooting-com-add-in-load-failures.aspx

但是,那里提出的所有可能原因似乎都不适用:

  • 插件不仅仅列在禁用项目列表中。
  • IDTExtensibility2方法中或代码中的其他任何地方都没有未处理的异常。所有代码都包装在 try/catch 等效项中,并且所有异常输出仅通过OutputDebugString或发送到日志文件中。
  • 该错误似乎与防病毒软件无关,即它也会在禁用它的情况下发生。
  • 禁用所有其他插件也对错误没有影响。

那么,还有什么可能导致 Outlook 禁用插件呢?

更多细节/观察:

  • 到目前为止,我们还无法在我们的测试环境中重现该问题,因此我们还无法在问题发生时附加调试器。
  • 当我们尝试通过远程支持 (TeamViewer) 观察发生的情况时,该问题永远不会发生。我怀疑这是因为 TeamViewer 使用了一个钩子 DLL,它将自身注入到所有正在运行的进程(包括 Outlook)中,从而影响内存布局、时间、线程顺序等。
  • 每当我们编译一个新版本的插件来尝试新的东西时,插件通常会正常工作几个小时甚至几天,但最终会再次被禁用。一旦发生这种情况,所有后续尝试让插件加载到该机器上(通过手动更改 LoadBehavior 值)都将失败(即 LoadBehaviour 将简单地更改回 2),直到我们编译和部署另一个构建(或尝试使用TeamViewer - 见上文)。
  • 通常,插件会在 Outlook 启动时立即卸载,但偶尔也会在 Outlook 已经运行一段时间后发生。在这些情况下,日志文件看起来完全不显眼 - 插件只需执行常规关闭步骤,就好像 Outlook 已正常关闭一样。
  • 据我所知,从我们的日志文件并通过 SysInternals ProcessMonitor 观察问题,当插件在 Outlook 启动时(而不是在会话期间)被禁用时,DLL 甚至在 COM 对象(即插件)被实例化之前就被卸载(构造函数中的日志消息永远不会出现)。
  • 我们将OutputDebugString消息放在initialization部分中(这是一个 Delphi DLL)。当插件无法加载时,它们都不会出现。
  • 只有极少数客户受到此问题的影响。我们有数以万计的安装,我们还没有收到任何关于此的报告。

  • 更新:似乎经常(但并非总是)在插件卸载之前记录的最后一件事是带有文本“OLE 错误 800A01A8”的异常。该异常被我正在使用的框架(Add-in-Express)中内置的全局异常处理程序捕获,并且不会出现在我自己的代码的任何地方,其中每个方法现在都完全包含在try..catch. 这通常发生在我从 Inspector 的 Activate 事件处理程序设置 CommandBarButtons 的可见性之后。

所有受影响机器的共同属性:

  • Windows XP Professional,最新补丁级别
  • Outlook 2003 Professional,最新补丁级别
  • 不同版本的 McAfee Virus Scan(尽管禁用它没有效果 - 见上文)
  • 用户是本地管理员组的成员

还有一点需要注意,这很可能也很重要(尽管可能没有我最初想的那么重要):
我们正在使用来自第三方供应商的许可/复制保护模块,该模块将已编译的 DLL 包装在“外壳”中,并且仅在运行时解包。自从我发现插件在我们自己的任何代码被执行之前就被卸载了,这一直是我的主要嫌疑人。然而,尽管供应商确认其代码中可能存在未处理的异常,但由保护外壳的特殊调试版本生成的日志文件显示解包过程已成功完成,并且在 Outlook 卸载插件之前控制权已交回受保护的 DLL . 因此,无论是什么导致 Outlook 卸载我们的插件,似乎都发生在保护外壳的初始化完成和我们自己的代码之间。

还有什么想法吗?

0 投票
1 回答
3703 浏览

vsto - Outlook 加载项功能区上的工具提示

我使用 VSTO 2008 创建了一个 Outlook 加载项。我没有为此加载项创建单独的功能区/组。相反,当 Outlook 启动时,VSTO 会在内置功能区中自动创建加载项按钮。现在如何自定义该加载项图标的工具提示?

这是为我的加载项添加标签和图标的片段

谢谢

0 投票
4 回答
1814 浏览

asp.net - VS 插件:查看标记。是否存在类似的东西?

在使用 Visual Studio (2008) 使用 ASP.NET 时,我遇到了不适的问题:源代码编辑器上下文菜单只有项目 ' View Designer' 但没有任何东西可以快速查看标记!

要查看它,您需要打开 Designer 并单击窗口底部的标记标签。或者使用 Shift+F7 热键(默认)。

所以我想在' View Markup'之外添加一个项目菜单' View Designer'。我想我必须使用 Visual Studio 加载项,如果它已经存在或自己编写。

你怎么看?是否可以?还是已经存在一些解决方案?

0 投票
4 回答
1828 浏览

visual-studio-2008 - Xsd2code 在 VS 2008 中不起作用

我正在尝试使用 Xsd2Code,但是当我在解决方案资源管理器中右键单击 xsd 文件时,插件没有显示。安装顺利进行,没有任何故障,但我仍然无法看到或使用插件 VS 2008。我的操作系统是 Vista x64。任何帮助都感激不尽。

0 投票
1 回答
288 浏览

visual-studio - 加载项文件中的巨大 AboutIconData 块

在我为 Visual Studio 生成的 .addin 文件中,我在AboutIconData属性下得到了非常大的二进制数据。谁能建议为什么这些数据会随着时间的推移而不断增长,以及我是否可以安全地删除它?

0 投票
2 回答
857 浏览

mfc - 如何在 VS 2003 中调试 Word 加载项 (.wll)

我正在尝试附加到 Word 并在我刚刚访问的 C++ (MFC) 源代码中设置断点。我以前从未这样做过,希望我省略了一些简单的步骤。到目前为止,我已经能够:

  • 在 VS 中编译源代码(这会生成 .obj 文件和 .pdb 文件,但没有 .wll 文件,这会造成混淆)
  • 在 VS 中附加到 Word,当我在 Word 中运行加载项时,我可以全部破解并查看反汇编代码
  • 找到在 VS 的模块窗口中运行的 myAddin.wll(VS 说没有加载符号)

我无法:

  • 加载调试符号。当我在模块窗口中右键单击 myAddin.wll 并尝试加载 myAddin.pdb 时,VS 会忽略我
  • 在 myAddin.cpp 中设置一个断点并点击它

有什么明显的我失踪了吗?您知道这方面的任何好的参考资料吗?

0 投票
3 回答
172 浏览

visual-studio - 可以从 Visual Studio 打印 4-Up?

我没有在谷歌上搜索这个问题,所以如果这是一个“谷歌是你的朋友(GIYF)”的问题,我提前道歉。

我总是双面打印源代码以节省纸张。是否有 VS (2003) 的插件,它允许您在纸张的一侧打印两页,以便我可以在一张纸上打印 4 页?我认为这称为 4-Up 打印。我几乎可以肯定,如果我将打印输出到一个文件然后使用外部实用程序,我可以做到这一点,但我希望能够在 VS 中完成这一切。