高兴地带

高兴就好

类型库导入程序 (Tlbimp.exe)

NET Framework 工具 
类型库导入程序 (Tlbimp.exe) 

 

类型库导入程序将 COM 类型库中的类型定义转换为公共语言运行库程序集中的等效定义。Tlbimp.exe 的输出为二进制文件(程序集),该文件中包含在原始类型库中定义的类型的运行库元数据。可以使用诸如 Ildasm.exe 这样的工具检查此文件。

复制到剪贴板
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

指定详细模式;显示有关导入的类型库的附加信息。

/?

显示该工具的命令语法和选项。

Note注意

Tlbimp.exe 的命令行选项不区分大小写,并可以按任何顺序提供。只需指定足够的选项来唯一标识它。因此,/n/nologo 等效,/ou:outfile.dll/out:outfile.dll 等效。

备注

Tlbimp.exe 同时执行整个类型库的转换。该工具不能用于为在单个类型库中定义的类型子集生成类型信息。

能够将强名称分配给程序集通常是有用或必需的。因此,Tlbimp.exe 包括相应的选项,用以提供必需的信息来生成具有强名称的程序集。/keyfile:/keycontainer: 选项均签发具有强名称的程序集。因此,一次只提供这些选项中的一个是合理的。

在从包含多个类型库的模块中导入类型库时,可以选择将资源 ID 追加到一个类型库文件中。只有当类型库文件位于当前目录或者您指定了完整的路径时,Tlbimp.exe 才能找到该文件。请参见本主题中后面的示例。

示例

下面的命令所生成的程序集与在 myTest.tlb 中找到的类型库具有相同的名称,并且具有 .dll 扩展名。

复制到剪贴板
tlbimp myTest.tlb 

下面的命令生成一个名为 myTest.dll 的程序集。

复制到剪贴板
tlbimp  myTest.tlb  /out:myTest.dll

下面的命令生成一个名称与 MyModule.dll/1 所指定的类型库的名称相同且扩展名为 .dll 的程序集。MyModule.dll/1 必须位于当前目录中。

复制到剪贴板
tlbimp MyModule.dll/1

下面的命令为类型库 TestLib.dll 生成一个名为 myTestLib.dll 的程序集。/transform:dispret 选项将该类型库中的调度接口方法的任何 [out, retval] 参数转换为托管库中的返回值。

复制到剪贴板
tlbimp TestLib.dll /transform:dispret /out:myTestLib.dll

上例中的类型库 TestLib.dll 包含一个名为 SomeMethod 的调度接口方法,它返回 void 且具有一个 [out, retval] 参数。下面的代码是 TestLib.dllSomeMethod 的输入类型库方法签名。

复制到剪贴板
void SomeMethod([out, retval] VARIANT_BOOL*);

指定 /transform:dispret 选项会使 Tlbimp.exe 将 SomeMethod[out, retval] 参数转换为 bool 返回值。以下是当指定 /transform:dispret 选项时,Tlbimp.exe 为托管库 myTestLib.dll 中的 SomeMethod 生成的方法签名。

C# 复制到剪贴板
bool SomeMethod();

如果使用 Tlbimp.exe 生成 TestLib.dll 的托管库时没有指定 /transform:dispret,则该工具为托管库 myTestLib.dll 中的 SomeMethod 生成以下方法签名。

C# 复制到剪贴板
void SomeMethod(out bool x);
请参见

参考

.NET Framework 工具
类型库导出程序 (Tlbexp.exe)
MSIL 反汇编程序 (Ildasm.exe)
强名称工具 (Sn.exe)
SDK 命令提示

概念

将类型库当作程序集导入
具有强名称的程序集
用于向互操作程序集导入类型库的属性

其他资源

有关从类型库转换到程序集的摘要
阅读更多
上一篇Cookie 手册
下一篇.Net提供三种途径供我们导入一个COM组件
想对作者说点什么? 我来说一句

TlbImp.exe

2010年07月10日 56KB 下载

没有更多推荐了,返回首页

关闭
关闭