测试环境:Visual Studio 2005 + Microsoft Office 2003(完全安装,当然包括Microsoft Visual Studio 2005 Tools for the Microsoft Office System 可再发行组件包,如果没有完全安装Office的话则需要安装这个东东。)
使用 Tlbimp.exe 生成主互操作程序集
-
在命令提示处,键入:
tlbimp tlbfile /primary /keyfile: filename /out: assemblyname
在这个命令中,tlbfile 是包含 COM 类型库的文件,filename 是包含密钥对的容器或文件的名称,assemblyname 是要使用强名称签名的程序集的名称。
主互操作程序集只能引用其他主互操作程序集。如果您的程序集引用第三方 COM 类型库中的类型,必须先从发行者获取一个主互操作程序集,才能生成您的主互操作程序集。如果您是发行者,必须先为相关类型库生成一个主互操作程序集,才能生成引用这些类型库的主互操作程序集。
如果相关主互操作程序集的版本号与原类型库的版本号不同,即使安装在当前目录中也无法发现该程序集。必须在 Windows 注册表中注册该相关主互操作程序集或使用 /reference 选项,确保 Tlbimp.exe 能找到该相关 DLL。
示例
下面的示例导入 COM 类型库 LibUtil.tlb 并使用密钥文件 CompanyA.snk 为程序集 LibUtil.dll 签署强名称。通过省略特定命名空间名称,此示例生成默认命名空间 LibUtil。
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /out:LibUtil.dll
为使名称更具有说明性,(使用 VendorName.LibraryName 命名指导原则),下面的示例将重写程序集文件名和命名空间名称。
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /namespace:CompanyA.LibUtil /out:CompanyA.LibUtil.dll
下面的示例导入 MyLib.tlb(它引用 CompanyA.LibUtil.dll)并使用密钥文件 CompanyB.snk 为程序集 CompanyB.MyLib.dll 签署强名称。命名空间 CompanyB.MyLib 会重写默认命名空间名称。
tlbimp MyLib.tlb /primary /keyfile:CompanyB.snk /namespace:CompanyB.MyLib /reference:CompanyA.LibUtil.dll /out:CompanyB.MyLib.dll