PIA (Primary Interop Assembly) & AIA (Alternate Interop Assembly)简介

2007年04月12日 23:42:00

当用.NET调用已有的COM组件的时候,一般需要使用tlbimp导入COM组件的TypeLibrary信息,生成对应的Interop Assembly。所谓PIA (Primary Interop Assembly),则是"官方"发布的对于某个COM组件的.NET DLL。比如微软公司发布了Office 2003COM组件,可以用于操作COM,同时,微软也发布了Office 2003所对应的PIA,用于.NETPIA和普通的Interop(又称为AIA, Alternative Interop Assembly)的不同之处在于:

1. PIA是官方发布并经过Sign,可以在不同程序中共享。而AIA如果被不同的公司Sign过,则一个公司SignAIA DLL所创建的对象和另外一个公司SignAIA DLL是不兼容的(不同的Key代表不同的Identity),这也是使用PIA的主要原因

2. PIA可能经过某种改动使其比一般Tlbimp生成的Interop DLL要容易使用一些,比如提供一些封装函数。修改方法通常有两种:

a. 可以从Tlbimp生成的DLL反汇编修改再生成新的DLL

b. 可以自己用C#来编写这个DLL(其实TlbimpTlbexp也是C#写的)

3. Tlbimp生成PIA的时候需要指定/primary开关并声明对应的key,如果不使用tlbimp生成PIA,则需要将对应的DLL加上PrimaryInteropAttributeGuidAttribute,这也正是Tlbimp所作的。

4. RegAsm注册PIA的时候,RegAsm会在COM组件的TypeLibrary注册项中加入注册信息表明该PIA对应这个COM组件

5. 当用Visual StudioAdd Reference功能的时候,VS会自动去查找是否有符合条件的PIA(通过上面所说的注册信息),如果存在,则直接使用这个DLL

作者 : ATField
Blog:
http://blog.csdn.net/atfield
转载请注明出处

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1562812


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PInvoke Interop Assistant是一款用于帮助开发人员在.NET平台上使用本机代码(Native Code)的工具。它提供了一个简单易用的界面,可以自动生成C#的PInvoke声明(Platform Invoke,平台调用)以及相应的数据类型转换代码,以便在.NET中调用本机函数。 PInvoke是指在.NET平台上调用本机代码的一种技术。由于.NET运行时环境(CLR)与本机代码之间的差异,所以在调用本机函数时会涉及到数据类型转换、内存管理等方面的问题。而PInvoke Interop Assistant就是为了解决这些问题而设计的。 使用PInvoke Interop Assistant,开发人员可以通过输入本机函数的名称、库文件的路径以及返回值和参数的数据类型等信息,自动生成C#的PInvoke声明。生成的声明会包含所需的函数签名、数据类型转换代码以及其他必要的声明。开发人员只需要将生成的代码复制到自己的项目中,然后就可以在.NET平台上调用本机函数了。 PInvoke Interop Assistant的优点在于它能够简化PInvoke的过程,减少了代码的编写工作量。使用这个工具,开发人员不需要手动编写复杂的PInvoke声明和数据类型转换代码,从而提高了开发效率。此外,PInvoke Interop Assistant还提供了一些更高级的功能,例如处理结构体、指针、回调函数等复杂的情况。 总之,PInvoke Interop Assistant是.NET开发人员在调用本机代码时的一个有用工具,它能够帮助开发人员自动生成所需的PInvoke声明和数据类型转换代码,从而简化了与本机代码的集成过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值