在C#中创建COM Surrogate服务器(exe)

san*_*osh 8 .net c# com

我知道如何在C#中创建COM DLL(类库).是否可以使用C#创建COM Surrogate EXE?

这将是一个独立的服务器,能够启动和托管COM对象,然后COM客户端可以访问它们.

Che*_*eso 5

COM的默认代理进程 - 托管COM DLL的东西,也就是COM代理 - 是dllhost.exe.可以在C++中创建代理进程. 本文解释了如何.

但是这些API不作为.NET Framework中基类库的一部分在包装器中公开.如果要编写只写托管代码,则需要其他内容.

我看到了几个选项.

  1. Visual Studio SDK,免费下载,适用于想要扩展Visual Studio的开发人员.在该SDK中,有一个包含此类包装器的类库.特别是,看看ISurrogate类.
    但是,VS SDK许可证表明SDK 适用于扩展或增加Visual Studio价值的产品.我不是律师,但这是我对许可证的理解,这很清楚.这些术语意味着VS SDK对于常规应用程序构建无用.
    剩下的一个问题是,究竟如何在技术上使用VS SDK仅使用C#代码生成COM代理? 再说一遍,我不知道.我简要地查看了文档中有关使用ISurrogate包装器的指南,但没有找到.
  2. 使用本文中的代码.
    本文探讨了COM和.NET互操作的一系列不同方面.在文章的最后,它提供了在C#中构建自己的COM服务器的源代码,包括对CoRegisterClassObject()和朋友的所有p/invoke调用.


Mar*_*ell 2

如果您需要进程外 COM 组件,一种选择是通过服务组件在 COM+ 中托管 dll 。虽然这仅支持 dll,但您可以编写一个简单地遵循 dll 的 shell exe(用于独立使用)。

不像 VB 那么简单,但它可以工作。

我确实记得有人向我展示了一种更直接的方式(没有 COM+),但我一辈子都不记得那是什么......