我正在尝试实现一个用 C# 编写的“进程外”COM 服务器。我该怎么做呢?

我需要 C# 代码从我的主 C++ 应用程序中“脱离进程”,因为我无法将 .NET 运行时加载到我的主进程空间中

为什么?:
我的 C++ 代码位于一个 DLL 中,该 DLL 被加载到许多不同的客户 EXE 中,其中一些使用不同版本的 .NET 运行时。由于单个进程中只能加载一个运行时,因此我最好的选择似乎是将我的 C# 代码放入另一个进程中。

有帮助吗?

解决方案

您可以使用 System.EnterpriseServices.ServicedComponent 创建 COM+ 组件。因此,您将能够创建进程外和进程内(客户端)组件激活以及池、远程处理、作为 Windows 服务运行等所有 COM+ 优势。

其他提示

这里 我们可以看出这是可能的,但是 exe 将作为库加载,而不是像 exe 那样在它自己的进程中启动。不知道这对你来说是不是一个问题?如果您确实想让它像真正的进程外 com 服务器一样运行,它还包含一些可能的解决方案。但也许使用另一种进程间通信方式更好。就像.Net 远程处理。

我不能推荐这个 道路, ,但您可以为 C# 库创建一个可调用 COM 的包装器,然后创建一个 VB6 ActiveX exe 项目,将调用委托给您的 C# 库。

为什么不能将 .net 运行时加载到进程空间中?可以托管 .net 运行时并使用 COM 调用 .net。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top