我们已经成功构建了2010,2013和2016的outlook插件。我们创建了一个OL2010 vsto项目,并使用.csproj文件(1 *)拨弄。问题是2013/2016年增加了几种类型,我们无法访问它们。我们只想访问它们,如果当然使用各自的OL版本。c#outlook插件vsto访问OL2016使用OL2010时的互操作性PIA
据我了解整个事情: 互操作程序集随附在插件中。所以它在理论上可能注入一些IL代码或提供具有相同名称空间的附加程序集以提供缺少的类型。由于这些Interop程序集只有COM Wrapper,并且该函数依赖于由安装的Outlook版本提供的非托管代码,所以在正确导入时应该可以无缝加载。
这是不是可行? 如果我尝试这个/将插件部署到客户端,会出现什么问题?
我如何继续确定是否需要使用更高版本的Interop类型?
如何加载更高的Interop类型?
如何在不冲突现有类型的情况下使用它?
正如我想要的Intellisense和静态类型。我必须预先定义这些类型,并用Guid,CoClass和TypeLibType对它们进行装饰。这足够吗? 。
(1 *)(我们改变了DebugInfoExeName和OfficeVersion在ProjectName.csproj文件,并创建相应的安装程序与在相应的Outlook版本安装不同的虚拟机可能有一个更简单的方法? - >让我知道!...可悲的是,我们不能使用插件 - 快递,因为一些原因。
我最好不要使用完整的OL 2016互操作程序集,因为它是从其他线程并且我们有一些同步代码必须在后台运行。
谢谢你的回答!
一个程序来实现那个链接中描述https://www.add-in-express.com/creating-addins-blog/2010/03/16/interop-assemblies-late-binding/(支持几个Office版本在一个加载项中,互操作程序集和后期绑定)。无论如何,任何建议仍然受到高度赞赏。 – FreeG
Microsoft Interop教程https://msdn.microsoft.com/en-us/library/aa645736(v=vs.71).aspx(COM Interop第1部分:C#客户机教程) – FreeG