我已经为 2003、2007 和 2010 创建了一个 Outlook 加载项。该加载项在 2007 年和 2010 年工作正常,但在 2003 年在除我自己的开发机器之外的任何机器上都无法正确加载。没有代码问题,因为加载行为中没有显示错误,并且它不是禁用的项目。该加载项也不显示在 COM 加载项列表中。此加载项以前在 2003 年以下工作。
这是奇怪的部分。我有一个较早时间点的加载项副本,因此不包含完整版本的某些功能。此加载项在 2003 年正确加载。因此,作为测试的一部分,在 VM 上,我安装了早期版本(我称之为test)和当前版本不起作用(我称之为full) . 在 HKCU > Software > Classes > CLSID > [[guid]] > InprocServer32 下的注册表中,对于测试版本,我将“Manifest Location”和“Manifest Name”键更改为完整版本的值。然后我运行 Outlook,完整版运行完美。
我看不出完整的加载项在它自己的注册表设置下是如何工作的,但在test下工作正常,并且只能在 Outlook 2003 上工作。
以下是基本信息:
我的开发设置是:
- Windows 7 64 位
- 已安装 Outlook 2003
- 为加载项项目运行 VS2008,但也为附属程序集使用 VS2010。
- Set Security 项目包括在内并进行了修改,以允许多个程序集设置 CASPol。
安装项目中包含以下先决条件:
- .Net 2.0
- .Net 3.5SP1
- Office 2003 PIA(也分别是 2007 和 2010 年的 2007 年和 2010 年的 PIA)
- VSTOSE 运行时
- 视窗安装程序 3.1
任何提示将不胜感激,因为我在这个问题上花了将近 4 天!
TIA。
更新1:
根据@JoaoAngelo 的评论,我检查了注册表设置,它们如下:
HKCU > 软件 > 类 > CLSID > {add-in CLSID} > InprocServer32
- (default) - '%CommonProgramFiles%\Microsoft Shared\VSTO\8.0\AddinLoader.dll'
- ManifestLocation - path to the containing folder
- ManifestName - the .dll.manifest file name
- ThreadingModel - 'Both'
HKCU > Software > Microsoft > Office > Outlook > Addins > MyAddin
- (default) - not set
- CommandLineSafe - '1'
- Description - a string
- FriendlyName - add-in ID
- LoadBehavior - '3' (this never gets set to 2, which would indicate an issue)
- Manifest - path to the .dll.manifest of the add-in assembly
- Path - path to the containing folder
根据部署页面,我还在后者下添加了以下内容,但无济于事:
- ManifestLocation
- ManifestName
更新 2:
根据 0xA3 评论;在 HKCR > MyAddin 下,我有一个带有单个字符串值的 CLSID 键:
(default) - {add-in CLSID}
CLSID 与 HKCU > Software > Classes > CLSID 和整个注册表中看到的相同。