2008-09-24 41 views
0

我有Excel插件,我添加了很多类模块,现在它非常笨重。我想将其转换为类型库或COM包,以便我可以将其重用于MS Office套件中的其他应用程序。如何为OLE自动化编写类库?

我将加载项作为类库项目移植到Visual Studio,但Excel自动化无法识别已编译的.dll文件中的类。直觉上我想我需要一个清单,一个接口或类似的东西在我的代码中。

为了公开类的方法和属性以用于OLE自动化,我需要知道些什么?

回答

1

我假设,因为你使用的短语清单,您使用的是.NET开发平台VS2003,VS2005或VS2008组装该DLL相比于VS 6.0

link提供一套详细的要求步骤注册.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部分使用单独的接口。这样做的原因与接口更改时COM的可破坏性有关,请考虑DLL Hell。

希望这会有所帮助, Bill。

1

(假设它是一个.NET项目)

而且具有的GUID添加到您的接口和类,您还需要将它们与标记有ComVisible特性属性标记(除非你已经打上它的整机组装) 。另外,您需要使用tlbexp.exe将元数据作为COM类型库导出,以便在非托管客户端中引用。

相关问题