3

我试图诊断为什么我用 C#/VSTO 3.0/VS 2008 编写的 Outlook 插件在安装后无法加载。

该插件在我安装了 Visual Studio 2008 的开发机器上运行良好。我不能指望我的所有用户都具备所有先决条件,所以我通过这些步骤编写了一个安装程序:http: //msdn.microsoft.com/en-us/library/cc563937 (loband).aspx

我在全新安装了 Outlook 2007 的全新 Windows XP SP 2 机器上安装了插件。它安装了所有前提条件(.NET 3.5、VSTO 3.0 运行时、Windows Installer 3.1、2007 PIA)。Outlook 启动,但加载项未运行。如果我转到信任中心的加载项选项卡,我会在“非活动应用程序加载项”部分看到我的加载项,并显示消息“未加载。加载 COM 加载项期间发生运行时错误."。

不知道如何找到特定的错误,以便我可以修复它。

reg 键看起来没问题。在 HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\Addins\BlahAddin 下,我看到了描述、FriendlyName、LoadBehavior(设置为 3 直到失败,之后如果设置为 2)和清单。

尝试了 VSTO_SUPPRESSDISPLAYALERTS 环境变量技巧,然后从命令行启动 Outlook,但没有输出。

我有或多或少的远程调试工作,但我不确定要寻找什么。当我附加到 Outlook 时,我没有看到我的 DLL 被加载,但是也许托管的 DLL 在 VS 中的显示方式不同。

关于我可以遵循以产生我可以诊断的特定错误的后续步骤的任何其他想法?

4

4 回答 4

3

经过数周的痛苦解决了我的问题。在安装构建期间,“清单”注册密钥被损坏为一些垃圾值。这是一个已知的 Visual Studio 错误,据说在 Visual Studio 2008 SP 1 中得到了修复,但显然不适合我。将项目名称重命名为与插件名称不同可以解决问题。随机的吧?

于 2009-09-18T16:12:57.453 回答
2

确保在 Outlook 调用的所有方法的顶层都有 try-catch 处理程序,并记录您无法以某种方式处理的任何异常。将您的故障排除重点放在Startup初始化期间调用的方法和其他方法等方法上。

于 2009-08-25T19:06:13.347 回答
1

在您的计算机上,当您从 Visual Studio 运行插件时,它应该在 HKEY_CURRENT_USER\Software\Microsoft\VSTO\Security\Inclusion{SomeGuid} 中创建一个注册表项。确保这些注册表设置也与您的插件一起部署。它们使您的代码受到信任。

于 2009-09-16T14:27:26.567 回答
1

您可能想使用远程调试器对此进行调试。在您的测试机器上(使用 UNC 路径共享)从您的开发人员机器(在 Program Files 中的 Visual Studio 文件夹中)共享 MSVCMON.EXE 文件夹,并在模块中的调试器捕获 (.NET) 异常下启动 Outlook 和在您的方法中放置断点。

如果您每次安装解决方案之前都需要清理测试计算机,您可能应该在 Virtual PC 2007 VM(免费下载)下运行 XP,并在设置除插件之外的所有内容后切换到差异 HD 以快照您的预安装状态一次,这样您就不必在更改程序以修复错误时继续卸载/重新安装。

您是安装调试版本还是发布版本?也许一种口味有不同的要求。只是猜测。

-迈克 [MSFT Office 开发人员]

于 2009-08-25T21:03:21.347 回答