【问题标题】:Need advice on referencing a Managed COM Server (EXE) from Client Application需要有关从客户端应用程序引用托管 COM 服务器 (EXE) 的建议
【发布时间】:2011-08-23 06:56:48
【问题描述】:

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

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

我怎样才能让它从托管代码中工作并且运行在它自己的进程中有一个进程外服务器?

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

C# 示例:

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

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

【问题讨论】:

    标签: c# com com+


    【解决方案1】:

    我在this文章中找到了答案:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-03
        • 2013-05-08
        • 1970-01-01
        • 2012-04-28
        • 1970-01-01
        • 2011-07-08
        相关资源
        最近更新 更多