2009-08-25 71 views
3

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

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

我安装外接一个全新的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下,我看到Description,FriendlyName,LoadBehavior(设置为3,直到它失败后,如果设置为2)和Manifest。

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

我有远程调试或多或少的工作,但我不知道要寻找什么。当我连接到Outlook时,我没有看到我的DLL加载,但是再次可能是托管的DLL在VS中显示的方式不同。

关于后续步骤的任何其他想法我可以按照以下步骤来生成我可以诊断的特定错误?

回答

3

解决了我的问题经过数周的痛苦。在安装过程中,“Manifest”注册表键在某些垃圾值被破坏。这是一个已知的Visual Studio bug,据说在Visual Studio 2008 SP 1中已经得到修复,但显然不适合我。重命名项目名称与插件名称不同可解决问题。随机,嗯?

2

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

+0

没有帮助不幸。我的启动/关闭方法非常贫瘠,我尝试用try/catch块来包装它们。 – 2009-08-27 19:17:44

1

您可能想要使用远程调试器进行调试。在您的测试机器上(与UNC路径共享)分享您的开发人员计算机上的MSVCMON.EXE文件夹(位于程序文件的Visual Studio文件夹中),并在模块中的调试器陷阱(.NET)异常下启动Outlook;在你的方法中加入断点。

如果您在安装解决方案之前每次都需要清理测试计算机,则应该在虚拟PC 2007 VM(免费下载)下运行XP并在设置完所有内容后切换到差异HD,然后将其插入快照您的预安装状态一次,所以您不必在卸载/重新安装时修改程序来修复错误。

您正在安装Debug版本还是Release版本?也许一种风味有不同的要求。只是猜测。

-Mike [MSFT办公室开发]

+0

始终在没有任何状态的干净虚拟机上进行安装。 可以通过托管和非托管模式下的远程调试附加到Outlook。加载过程中抛出异常,但很难解释没有mso.dll符号: “0x7c81eb33(kernel32.dll)在OUTLOOK.EXE中的第一次机会异常:0x000006A6:绑定句柄无效。” 插件未加载时,安全模式下的类似异常。 无法在我的加载项中设置断点(“断点当前不会被命中,没有符号将被加载到这个文档中”),但是我的消息框没有显示意味着我在加载项之前得到了borked负载。 – 2009-08-27 19:30:09

1

在你的机器上,当您从Visual Studio中的插件,它应该创建在HKEY_CURRENT_USER \ SOFTWARE \微软\ VSTO \安全\ {纳入} SomeGuid注册表项。确保这些注册表设置也与您的插件一起部署。他们是让你的代码被信任的那些人。