如何为OLE自动化编写类库?
时间:2020-03-06 14:39:54 来源:igfitidea点击:
我有Excel加载项,其中添加了很多类模块,因此现在非常庞大。我想将其转换为类型库或者COM包,以便可以将其重新用于MS Office套件中的其他应用程序。
我将外接程序作为类库项目移植到Visual Studio,但是Excel Automation无法识别已编译的.dll文件中的类。凭直觉,我认为我的代码中需要清单,接口或者类似的东西。
为了公开用于OLE自动化的类的方法和属性,我需要了解什么?
解决方案
我假设由于我们使用了短语清单,因此与VS 6.0相比,我们正在使用.net开发平台VS2003,VS2005或者VS2008组装此DLL。
该链接提供了注册.NET程序集以用作COM组件所需的详细步骤集。
文章没有提到我通常要做的一件事是创建自己的GUID。使用"工具"菜单中的"创建GUID"项,然后将其插入要为COM公开的类,接口和枚举上方。
[Guid("3838ADC1-E901-4003-BD0C-A889A7CF25A1")] public interface IMyCOMClass { void MyMethod(); } [Guid("476BDEB6-B933-4ed5-8B86-7D9330A59356"), ClassInterface(ClassInterfaceType.None)] public class MyCOMClass : IMyCOMClass { public void MyMethod() { //implementation here } }
我要做的第二件事是为类实现的COM部分使用单独的接口。 DLL Hell认为,这样做的原因与接口更改时COM的可破坏性有关。
希望这可以帮助,
账单。
(假设它是一个.NET项目)
除了必须将Guid添加到接口和类之外,还需要使用ComVisible属性标记它们(除非已使用它标记了整个程序集)。另外,我们需要使用tlbexp.exe将元数据导出为COM类型库,以便在非托管客户端中进行引用。