.net - .NET 中是否有相当于进程外 COM EXE 的功能?

标签 .net com activex

COM/ActiveX 的优点之一是进程外 EXE。您可以有一个 EXE,它以一种其他进程(包括 VBScript 和 JScript)都可以使用的形式公开方法和属性。同时,EXE 可以有自己的功能,与它的类型库公开的功能相关或无关。

.NET 等价物是什么?

我有一个现有的 VB6 项目,它是一个脚本语言解释器(使用 MSScript)和其他脚本语言的各种工具功能的资源。有人建议我尝试将其转换为 .NET。

这会起作用吗,还是我最终会将一件元素分成两份?

最佳答案

企业服务将允许您这样做。您可以将 COM 组件运行为:

  • 一个DLLHost进程
  • 一条服务
  • 一个 inproc 库(这与您的其他代码在同一进程中)

  • 互联网上有很多关于这些的例子。它归结为:
  • 使用接口(interface)
  • 装饰您需要向 COM 公开的类
  • 您要托管的组件需要派生自 ServicedComponent
  • 使用 GuidAttribute 装饰您的界面(使用唯一的 Guid)
  • 使用 ComVisible(true) 属性修饰向 COM 公开的接口(interface)和类

  • 希望这可以帮助。

    关于.net - .NET 中是否有相当于进程外 COM EXE 的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/604776/

    相关文章:

    c# - 正则表达式匹配字符串

    activex - 在我的 PowerBuilder 应用程序中激活 OLEControl 时,工具栏项目消失

    c# - 如何在 .NET 中使用自定义格式对 TimeSpan 对象进行 String.Format ?

    使用 Lazy<T> 的 C# 单例模式

    javascript - AngularJS - 具有多个实例的 Controller 的表单验证

    c++ - 如何避免控制台输出有关不支持的操作? (IWebBrowser2,DISP_E_MEMBERNOTFOUND)

    javascript - 使用javascript查找 "my documents"路径

    c++ - 触发 COM 事件时调用 Lock()/Unlock() 的目的是什么?

    Linux 上运行的 Python Pyro 在远程 windows 机器上打开一个 COM 对象,可能吗?

    c++ - 在 vs2005 中通过 COM 引用 .net 4 库