netoffice中使用IDTExtensibility2和ComAddin在netoffice中是否有技术优势?或者他们都完成同样的事情(虽然通过不同的路径)?
我知道ComAddin继承自IDTExtensibility2接口 - 我想我的问题很简单 - 为什么我会直接从接口继承而不是从ComAddin类继承?更多控制?
答案 0 :(得分:2)
NetOffice不使用或使用PIA或VSTO(不需要)。这是NetOffice的优势之一。
IDTExtensibility2接口是MS-Office中基于COM的插件的通用接口。 Office应用程序从插件创建一个实例(基于注册表信息),并通过此插件与插件进行通信。你可以通过实现这些界面来创建办公室插件。 (所有解决方案,addin express,vsto,netoffice在幕后做这件事)
NetOffice中的COMAddin基类是通过IDTExtensibility2接口处理Office并为您处理典型基础结构任务(注册/取消注册等)的顶级包装器。 VSTO基本相同但你从未在这里看过基类(在codeprovider magic期间,你可以在IL Spy oder Reflector中看到这个)
COMAddin基类使得创建办公室插件和减少基础设施代码变得更容易一些,以便更加熟悉VSTO - 这就是整个想法。您选择使用它。如果你没有特殊要求,我很清楚我的发现。
答案 1 :(得分:1)
ComAddin要求您安装Office,但NetOffice仅适用于PIA(主互操作程序集)。
从此link
中提取Office COM加载项是进程内COM服务器,由Office应用程序通过COM运行时层激活。因此,在.NET中开发COM加载项要求加载项组件在.NET中实现,然后通过COM互操作层公开给COM客户端(即Office应用程序)。