我们已经成功地为 2010、2013 和 2016 构建了一个 Outlook 插件。我们创建了一个 OL2010 vsto 项目并修改了 .csproj 文件(1*)。问题是 2013/2016 年添加的类型很少,我们无法访问它们。当然,我们只想在使用相应的 OL 版本时访问它们。
据我了解整个事情:互操作程序集与插件一起提供。因此,理论上可以注入一些 IL 代码或提供具有相同命名空间的附加程序集,以提供那些缺失的类型。由于这些互操作程序集只是 COM 包装器,并且功能依赖于已安装的 Outlook 版本提供的非托管代码,因此它们应该在正确导入时无缝加载。
这在某种程度上可行吗?如果我尝试这个/将插件部署到客户端会出现什么问题?
我如何才能确定是否需要使用更高版本的互操作类型?
如何加载更高的互操作类型?
如何在不与现有类型冲突的情况下使用它?
因为我想要智能感知和静态类型。我必须预先定义这些类型并用 Guid、CoClass 和 TypeLibType 来装饰它们。这样就够了吗?
(1*)(我们更改了 ProjectName.csproj 文件中的 DebugInfoExeName 和 OfficeVersion 并使用安装了相应 Outlook 版本的不同虚拟机构建了相应的安装程序。也许有更简单的方法?-> 让我知道!.. . 遗憾的是,由于某些原因,我们不能使用 addin-express。
我最好不要使用完整的 OL 2016 互操作程序集,因为它在从主线程以外的其他线程使用时会引发异常。而且我们有一些必须在后台运行的同步代码。
感谢您的任何回答!