类型库导入程序将 COM 类型库中的类型定义转换为公共语言运行库程序集中的等效定义。Tlbimp.exe 的输出为二进制文件(程序集),该文件中包含在原始类型库中定义的类型的运行库元数据。可以使用诸如 Ildasm.exe 这样的工具检查此文件。
tlbimp 是 类型库导入程序 (Tlbimp.exe)
ms-help://MS.MSDNVS.2052/cptools/html/cpgrftypelibraryimportertlbimpexe.htm
这个不需要下载,VS.Net安装以后就有了.
tlbimp.exe怎么用?
TlbImp.exe首先你安装(TTS5中文版)并在控制面板中设定为中文为默认
在C盘找一个文件tlbimp.exe(.net3的托管程序)复制到c:\program files\common files\microsoft shared\speech下!同时看看有没有sapi.dll(TTS5动态库)然后执行命令行里到该目录下执行
tlbimp sapi.dll /:out netspeech.dll就生成了netspeech.dll库
在VS2008中引用netspeech.dll库就可以了。
用TlbImp.exe生成程序可调用的Dll:
在很多项目当中需要安装某些程序并调用接口...虽然配置服务器上也安装了程序,但是发布的程序却不能直接调用...后来发现在VS里调试重新引用一下Dll就没有问题了.但是不可能每安装一次就重新调试一下...因为需要配置的机器未必会安装Visual Studio...
有个办法可以解决配置的问题...主角就是:TlbImp.exe,它是Visual Studio自带的类型库导入程序,路径位于
\v2.0\Bin\TlbImp.exe XXX.tlb /out:myTest.dll
当然其实也可以先引用COM,然后编译,让VS生成一个Interop.XXX.dll后,把它随着程序一起发布,并且移除原来的COM引用,改为直接引用新生成的Interop.XXX.dll.
tlbimp tlbFile [options]
参数
参数 | 说明 |
---|---|
tlbFile | 包含 COM 类型库的任意文件的名称。 |
选项 | 说明 |
---|---|
/asmversion:versionNumber | 指定要生成的程序集的版本号。以 major.minor.build.revision 格式指定versionNumber。 |
/delaysign | 向 Tlbimp.exe 指定使用延迟签名以强名称对结果程序集进行签名。此选项必须与 /keycontainer:、/keyfile: 或 /publickey: 选项一起指定。有关延迟签名进程的更多信息,请参见延迟为程序集签名。 |
/help | 显示该工具的命令语法和选项。 |
/keycontainer:containername | 使用在 containername 指定的密钥容器中找到的公钥/私钥对,签发具有强名称的结果程序集。 |
/keyfile: filename | 使用在 filename 中找到的发行者的正式公钥/私钥对,签发具有强名称的结果程序集。 |
/namespace:namespace | 指定在其中生成程序集的命名空间。 |
/noclassmembers | 防止 Tlbimp.exe 向类添加成员。这样可避免潜在的 TypeLoadException。 |
/nologo | 取消显示 Microsoft 启动标题。 |
/out: filename | 指定输出文件、程序集以及要写入元数据定义的命名空间的名称。如果类型库指定的接口定义语言 (IDL) 自定义属性显式控制该程序集的命名空间,则/out 选项对程序集的命名空间没有影响。如果您没有指定此选项,则 Tlbimp.exe 将元数据写入与在输入文件内定义的实际类型库同名的文件中,并且为其分配 .dll 扩展名。如果输出文件的名称与输入文件的名称相同,则该工具将生成一个错误,以防止重写该类型库。 |
/primary | 生 成指定类型库的主 interop 程序集。相关信息将被添加到该程序集中,以指示类型库的发行者已生成该程序集。通过指定主 interop 程序集,您可以将一个发行者的程序集与使用 Tlbimp.exe 从该类型库创建的任何其他程序集区分开来。如果您是正使用 Tlbimp.exe 导入的类型库的发行者,则只应使用/primary 选项。请注意,您必须签发具有强名称的主 interop 程序集。有关更多信息,请参见主互操作程序集。 |
/publickey:filename | 指定包含用来签发结果程序集的公钥的文件。如果您指定了 /keyfile: 或/keycontainer: 选项而非 /publickey:,则 Tlbimp.exe 将根据由 /keyfile: 或/keycontainer: 提供的公钥/私钥对来生成公钥。publickey: 选项支持测试键和延迟签名方案。该文件采用由 Sn.exe 生成的格式。有关更多信息,请参见强名称工具 (Sn.exe) 中 Sn.exe 的 -p 选项。 |
/reference:filename | 指定程序集文件,用以解析对在当前类型库外定义的类型的引用。如果您没有指定 /reference 选项,Tlbimp.exe 将自动以递归的方式导入任何被导入的类型库引用的外部类型库。如果您指定了 /reference 选项,那么在导入其他类型库之前,该工具将尝试解析被引用程序集中的外部类型。 |
/silent | 取消显示成功消息。 |
/strictref | 如果此工具不能解析当前程序集、/reference 选项指定的程序集或已注册的主互操作程序集 (PIA) 内的所有引用,则不要导入类型库。 |
/strictref:nopia | 与 /strictref 相同,但忽略 PIA。 |
/sysarray | 指定该工具将 COM 样式 SafeArray 作为托管 System.Array 类类型导入。 |
/tlbreference:filename | 指定类型库文件,用于在不参考注册表的情况下解析类型库引用。 请注意,此选项不加载某些较早的类型库格式。但是,您仍可以通过注册表或当前目录隐式加载较早的类型库格式。 |
/transform:transformName | 按 transformName 参数的指定转换元数据。 指定 dispret 作为 transformName 参数,可以将仅支持调度的接口(调度接口)的方法的 [out, retval] 参数转换为返回值。 有关此选项的更多信息,请参见本主题后面的示例。 |
/unsafe | 在不进行 .NET Framework 安全检查的情况下生成接口。调用以此方式公开的方法可能会导致安全风险。如果您不了解公开此类代码的风险,则不应使用此选项。 |
/verbose | 指定详细模式;显示有关导入的类型库的附加信息。 |
/? | 显示该工具的命令语法和选项。 |
>
Tlbimp.exe 的命令行选项不区分大小写,并可以按任何顺序提供。只需指定足够的选项来唯一标识它。因此,/n 与 /nologo 等效,/ou:outfile.dll 与 /out:outfile.dll 等效。 |
备注:
Tlbimp.exe 同时执行整个类型库的转换。该工具不能用于为在单个类型库中定义的类型子集生成类型信息。
能够将强名称分配给程序集通常是有用或必需的。因此,Tlbimp.exe 包括相应的选项,用以提供必需的信息来生成具有强名称的程序集。/keyfile: 和 /keycontainer: 选项均签发具有强名称的程序集。因此,一次只提供这些选项中的一个是合理的。
在从包含多个类型库的模块中导入类型库时,可以选择将资源 ID 追加到一个类型库文件中。只有当类型库文件位于当前目录或者您指定了完整的路径时,Tlbimp.exe 才能找到该文件。请参见本主题中后面的示例。