科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件在ASP.NET中使用非托管COM组件

在ASP.NET中使用非托管COM组件

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

ASP.NET是基于通用语言运行库创建的,也就是所谓的托管执行环境。生成的代码称为托管代码......

作者:techng 来源:DotNET中文技术网 2007年10月25日

关键字: ASP.NET 非托管 COM组件 Windows

  • 评论
  • 分享微博
  • 分享邮件
众所周知,ASP.NET是基于通用语言运行库创建的,也就是所谓的托管执行环境。生成的代码称为托管代码。编译器能够从源代码的描述中产生元数据信息,而运行库又从元数据中获得托管代码的信息。而我们编写的组件一般是在非托管环境下创建的,这些组件往往不包含元数据信息,那么我们怎么在托管代码中使用这些元数据信息呢?

  为了在托管环境中使用非托管代码,我们首先必须手工为这些现有的组件产生元数据信息 。必须有一种工具能够产生元数据。能够从某个地方获得元数据。这个元数据的发源地就是类型库,事实上,今天所有的组件都有一个类型库。

  这里为了说明如何产生元数据信息,我们不妨以Microsoft Agent组件为例进行说明。这个组件类似于Office的小助手,它能够完成各种丰富多彩的人性化的动作,并且支持语音识别和语音合成。一般的操作系统都默认安装了这个组件,用户该不会发愁没有这个组件吧。如果你的系统删除了这个组件,你可以到http://microsoft.com/msagent/downloads.htm.去下载。

  1、首先是创建元数据

  Microsoft Agent控件默认是安装在%systemroot%\msagent\目录下,我们可以首先从开始菜单中Visual Studio.NET Command Prompt菜单项定位到这个目录。在这个目录执行下面的命令。

  tlbimp agentctl.dll /out: agentctl_proxy.dll
  通过这个命令我们可以创建一个包含元数据信息的代理文件agentctl_proxy.dll。注意这并不是一个真正的动态连接库文件,而是一个装配文件(Assembly),也就是我们非托管COM组件的代理。

  也可以通过.NET框架提供的实用程序aximp.exe创建,命令行如下,这样它会生成两个文件,如下图所示:注意AgentObjects.dll 和agentctl_proxy.dll文件是完全一样的文件。

  aximp %systemroot%\msagent\agentctl.dll



  2、安装到ASP.NET中

  把元数据文件安装到ASP.NET 环境中有两种办法:

  一是把文件复制到应用程序的BIN目录。

  二是把它复制到ASP.NET目录。

  第二种方法有一个缺陷,你必须在每一个使用组件的ASP.NET页面插入一个@Assembly语句。而保存到Bin目录则可以避免这一点。assembly将会被加载到应用程序的所有ASP.NET页面。因此我们最好还是把它放在bin目录。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章