【发布时间】:2014-04-03 15:10:14
【问题描述】:
我知道如何在 C# 中创建 COM DLL(类库)。是否可以使用 C# 创建 COM 代理 EXE?
这将是一个独立的服务器,能够启动和托管 COM 对象,然后 COM 客户端可以访问这些对象。
【问题讨论】:
我知道如何在 C# 中创建 COM DLL(类库)。是否可以使用 C# 创建 COM 代理 EXE?
这将是一个独立的服务器,能够启动和托管 COM 对象,然后 COM 客户端可以访问这些对象。
【问题讨论】:
COM 的默认代理进程 - 托管 COM DLL 的东西,也就是 COM Surrogate - 是 dllhost.exe。可以在 C++ 中创建代理进程。 This article 解释了如何。
但这些 API 并未作为 .NET Framework 中基类库的一部分在包装器中公开。如果你想写只写托管代码,你需要别的东西。
我看到了几个选项。
【讨论】:
我想做同样的事情,并在 All-In-One Code Framework 上找到了出色的项目示例 CSExeCOMServer。它实际上通过 .NET 和对 Windows API 的本机调用重构了正常的 COM 服务器逻辑。但它看起来仍然过于复杂。我想在进程外服务器中将 .NET 对象公开为 COM 没有简单快捷的方法,这不是首选的架构。
【讨论】:
如果您想要一个进程外 COM 组件,一个选项是通过serviced components 在 COM+ 中托管一个 dll。虽然这仅支持 dll,但您可以编写一个简单地遵循 dll 的 shell exe(供独立使用)。
不像VB那么简单,但它可以工作。
我确实记得有人向我展示了一种更直接的方式(没有 COM+),但我终其一生都不记得那是什么......
【讨论】: