VSTO Addin for Outlook 不起作用



我看到过很多关于这个问题的帖子和网站。我已经尝试了我找到的每一个解决方案,但没有一个有效(我已经尝试了好几天了)。我看到很多帖子都有同样的问题,但解决方案要么不适合我,要么不适用。

我有一个Outlook 2007的插件,可以在电子邮件的标题和正文中添加文本。使用.msi文件为所有用户安装。我去年部署的一个旧版本运行得很好。我创建的新版本只有一些小的输入/输出变化,没有什么大的变化。这个新版本在我的开发计算机上从Visual Studio调试和从实际安装中都可以完美地工作。然而,我不能让它在非开发计算机上工作。以下是程序和目标计算机的详细信息(开发计算机和目标计算机的详细信息是相同的,除了目标计算机没有Visual Studio):

-Using Visual Studio Professional 2013
-Written in Visual Basic
-Target Framework is .NET 4.0
-The add-in is only run once the "send" button on an email is clicked.
-Outlook version is Outlook 2007
-Operating system is Windows 7 Enterprise SP1 32-bit

问题是插件无法在目标计算机上加载(是的,我知道,无数人都有同样的问题)。正如我之前所说,它在我的计算机上调试和安装版本都可以正常工作。这让我认为另一台计算机丢失了一些东西,所以我尝试在目标计算机上安装。net 4.0框架,但它告诉我它已经安装了。我用尽了我所能想到的一切办法来使它工作,但无济于事。下面是它的行为:

-Installs fine with no errors.
-HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Office/Outlook/Addins/EmailMarkTool/LoadBehavior = 3 after installation.
-VSTO_LOGALERTS = 1
-VSTO_SUPPRESSDISPLAYALERTS = 0
-Outlook opens with no apparent errors.
-LoadBehavior = 0 immediately after Outlook is opened.
-Shows up in the Add-ins under "Inactive Application Add-ins."
-Never shows up under "Disabled Add-ins."
-In the "COM Add-Ins" dialog where I can check which add-ins to use, it shows the correct directory and the Load Behavior is "Unloaded."
-The add-in can be checked. When I click "OK" I don't get any errors. When I go back to the Add-ins, it is unchecked and "Unloaded" again.
-Setting the LoadBehavior to 3 doesn't help because it goes back to 0 as soon as Outlook is started again.
-I inserted a try-catch block into the New() function of the add-in that has a MsgBox pop-up and a Throw.
-I get absolutely no errors anywhere.
-No log file is generated.

我试过多次卸载、重建和重新安装,结果都是一样的。我只是不明白为什么它会在我的开发计算机上工作,而不是目标计算机。谢谢你读这一切。我知道很多,但我得把细节说出来。提前感谢任何输入!

[UPDATE]:我刚刚创建了一个全新的最小加载项,只是为了测试它是否可以工作,但得到相同的结果

我找到问题了!

这个问题可能是Outlook 2007独有的。原来Microsoft Office 2007 SP1和SP2有一个错误,阻止它运行VSTO插件。微软发布了修复此问题的热修复程序(https://support.microsoft.com/en-us/kb/976477)。这被添加到Microsoft Office SP3的发布中。但是,要激活修复程序,必须创建一个新的注册表标志,但修复程序不会自动完成这一操作,因此在手动激活修复程序之前,该修复程序是无用的(说明和下载在这里)。所以…

要在Outlook 2007中启用VSTO添加,您必须向此注册表添加一个子键:HKEY_LOCAL_MACHINESOFTWAREMicrosoftOffice12.0CommonGeneral并添加一个DWORD "EnableLocalMachineVSTO",值设为1。

我这样做了,重新启动了电脑,第23次安装了我的插件,它安装并运行得很好!不过,我不确定以前的版本是如何工作的。有可能我们的系统管理员在某些时候为了加强安全性而删除了该子密钥。

您遇到的loadbehaviour关键问题很奇怪。虽然我认为这可能不是你的解决方案,但它可能是,所以值得一试。

目标计算机需要安装用于office运行时的VSTO工具。您可以从以下链接下载这些工具- https://www.microsoft.com/en-GB/download/details.aspx?id=48217

最新更新