我知道如何在C#中创建COM DLL(类库)。是否可以使用C#创建COM Surrogate EXE?
这将是一个独立的服务器,能够启动和托管COM对象,然后COM客户端可以访问它们。
答案 0 :(得分:5)
COM的默认代理进程 - 承载COM DLL的东西,又名 COM代理 - 是dllhost.exe。可以在C ++中创建代理进程。 This article解释了如何。
但是这些API不会作为.NET Framework中基类库的一部分在包装器中公开。如果您想编写只编写托管代码,则需要其他内容。
我看到了几个选项。
答案 1 :(得分:4)
我想做同样的事情,并在All-In-One Code Framework上找到了优秀的项目示例CSExeCOMServer。它实际上通过.NET和对Windows API的本机调用来重建正常的COM服务器逻辑。但它看起来仍然过于复杂。我想在进程外服务器中没有简单快捷的方法将.NET对象公开为COM,而且它不是首选架构。
答案 2 :(得分:2)
如果您想要一个进程外COM组件,一个选项是通过serviced components在COM +中托管一个dll。这只支持dll,但你可以编写一个shell exe(用于独立使用),它只是简单地推送到dll。
不像VB那么简单,但它有效。
我确实记得有人向我展示了一种更直接的方式(没有COM +),但我不能为我的生活记住它是什么......