需要有关从客户端应用程序引用托管 COM 服务器 (EXE) 的建议

本文关键字:服务器 COM EXE 客户端 引用 应用程序 | 更新日期: 2023-09-27 17:56:21

我在 C# 中有一个托管的 COM 进程外服务器 exe 公开我的应用程序对象模型以实现自动化一切正常。我可以从非托管代码(例如 VC++)访问它,它使用为我的服务器 exe 创建的类型库启动我的 proc 服务器,并且每个服务器都通过 COM 工作。

当我尝试从托管代码(例如 C# 客户端应用程序)执行此操作时,我引用我的服务器 exe,但它将进程中的服务器加载到客户端应用程序中。

如何让它从托管代码中工作,并在自己的进程中运行进程外服务器?

我正在尝试做的是通过我的应用程序在COM中公开应用程序对象模型,以便它可以由非托管代码和托管代码自动使用,类似于Microsoft Office。通过 COM 在非托管代码下一切正常,但尝试从托管代码执行相同的操作只会在进程中实例化我的对象。

C# 示例:

MyApp.Application app = new MyApp.Application();

只会实例化对象,但我也希望它启动我的进程外 COM 服务器。我在这里错过了什么,只是想知道是否有人对该做什么或去哪里寻找有建议。

需要有关从客户端应用程序引用托管 COM 服务器 (EXE) 的建议

我在这篇文章中找到了答案:

无论是否 实现 .NET 程序集是一个 类库 DLL 或可执行文件, 始终加载此程序集 进程内进入地址空间 客户端应用程序。并且,在 对于 EXE 程序集,它既不执行, 它的运行实例也不会 用于实例化所需的 .NET .class。...

需要一些其他非正统的方法才能模拟将 .NET EXE 程序集用作进程外 COM 服务器。

我能想到的就是使用 COM+ 中托管的服务组件。MSDN 链接