類型庫導(dǎo)入程序?qū)?COM 類型庫中的類型定義轉(zhuǎn)換為公共語言運(yùn)行庫程序集中的等效定義。Tlbimp.exe 的輸出為二進(jìn)制文件(程序集),該文件中包含在原始類型庫中定義的類型的運(yùn)行庫元數(shù)據(jù)。可以使用諸如 Ildasm.exe 這樣的工具檢查此文件。
tlbimp 是 類型庫導(dǎo)入程序 (Tlbimp.exe)
ms-help://MS.MSDNVS.2052/cptools/html/cpgrftypelibraryimportertlbimpexe.htm
這個(gè)不需要下載,VS.Net安裝以后就有了.
tlbimp.exe怎么用?
TlbImp.exe首先你安裝(TTS5中文版)并在控制面板中設(shè)定為中文為默認(rèn)
在C盤找一個(gè)文件tlbimp.exe(.net3的托管程序)復(fù)制到c:\program files\common files\microsoft shared\speech下!同時(shí)看看有沒有sapi.dll(TTS5動(dòng)態(tài)庫)然后執(zhí)行命令行里到該目錄下執(zhí)行
tlbimp sapi.dll /:out netspeech.dll就生成了netspeech.dll庫
在VS2008中引用netspeech.dll庫就可以了。
用TlbImp.exe生成程序可調(diào)用的Dll:
在很多項(xiàng)目當(dāng)中需要安裝某些程序并調(diào)用接口...雖然配置服務(wù)器上也安裝了程序,但是發(fā)布的程序卻不能直接調(diào)用...后來發(fā)現(xiàn)在VS里調(diào)試重新引用一下Dll就沒有問題了.但是不可能每安裝一次就重新調(diào)試一下...因?yàn)樾枰渲玫臋C(jī)器未必會(huì)安裝Visual Studio...
有個(gè)辦法可以解決配置的問題...主角就是:TlbImp.exe,它是Visual Studio自帶的類型庫導(dǎo)入程序,路徑位于
\v2.0\Bin\TlbImp.exe XXX.tlb /out:myTest.dll
當(dāng)然其實(shí)也可以先引用COM,然后編譯,讓VS生成一個(gè)Interop.XXX.dll后,把它隨著程序一起發(fā)布,并且移除原來的COM引用,改為直接引用新生成的Interop.XXX.dll.
tlbimp tlbFile [options]
參數(shù)
參數(shù) | 說明 |
---|---|
tlbFile | 包含 COM 類型庫的任意文件的名稱。 |
選項(xiàng) | 說明 |
---|---|
/asmversion:versionNumber | 指定要生成的程序集的版本號(hào)。以 major.minor.build.revision 格式指定versionNumber。 |
/delaysign | 向 Tlbimp.exe 指定使用延遲簽名以強(qiáng)名稱對(duì)結(jié)果程序集進(jìn)行簽名。此選項(xiàng)必須與 /keycontainer:、/keyfile: 或 /publickey: 選項(xiàng)一起指定。有關(guān)延遲簽名進(jìn)程的更多信息,請(qǐng)參見延遲為程序集簽名。 |
/help | 顯示該工具的命令語法和選項(xiàng)。 |
/keycontainer:containername | 使用在 containername 指定的密鑰容器中找到的公鑰/私鑰對(duì),簽發(fā)具有強(qiáng)名稱的結(jié)果程序集。 |
/keyfile: filename | 使用在 filename 中找到的發(fā)行者的正式公鑰/私鑰對(duì),簽發(fā)具有強(qiáng)名稱的結(jié)果程序集。 |
/namespace:namespace | 指定在其中生成程序集的命名空間。 |
/noclassmembers | 防止 Tlbimp.exe 向類添加成員。這樣可避免潛在的 TypeLoadException。 |
/nologo | 取消顯示 Microsoft 啟動(dòng)標(biāo)題。 |
/out: filename | 指定輸出文件、程序集以及要寫入元數(shù)據(jù)定義的命名空間的名稱。如果類型庫指定的接口定義語言 (IDL) 自定義屬性顯式控制該程序集的命名空間,則/out 選項(xiàng)對(duì)程序集的命名空間沒有影響。如果您沒有指定此選項(xiàng),則 Tlbimp.exe 將元數(shù)據(jù)寫入與在輸入文件內(nèi)定義的實(shí)際類型庫同名的文件中,并且為其分配 .dll 擴(kuò)展名。如果輸出文件的名稱與輸入文件的名稱相同,則該工具將生成一個(gè)錯(cuò)誤,以防止重寫該類型庫。 |
/primary | 生 成指定類型庫的主 interop 程序集。相關(guān)信息將被添加到該程序集中,以指示類型庫的發(fā)行者已生成該程序集。通過指定主 interop 程序集,您可以將一個(gè)發(fā)行者的程序集與使用 Tlbimp.exe 從該類型庫創(chuàng)建的任何其他程序集區(qū)分開來。如果您是正使用 Tlbimp.exe 導(dǎo)入的類型庫的發(fā)行者,則只應(yīng)使用/primary 選項(xiàng)。請(qǐng)注意,您必須簽發(fā)具有強(qiáng)名稱的主 interop 程序集。有關(guān)更多信息,請(qǐng)參見主互操作程序集。 |
/publickey:filename | 指定包含用來簽發(fā)結(jié)果程序集的公鑰的文件。如果您指定了 /keyfile: 或/keycontainer: 選項(xiàng)而非 /publickey:,則 Tlbimp.exe 將根據(jù)由 /keyfile: 或/keycontainer: 提供的公鑰/私鑰對(duì)來生成公鑰。publickey: 選項(xiàng)支持測試鍵和延遲簽名方案。該文件采用由 Sn.exe 生成的格式。有關(guān)更多信息,請(qǐng)參見強(qiáng)名稱工具 (Sn.exe) 中 Sn.exe 的 -p 選項(xiàng)。 |
/reference:filename | 指定程序集文件,用以解析對(duì)在當(dāng)前類型庫外定義的類型的引用。如果您沒有指定 /reference 選項(xiàng),Tlbimp.exe 將自動(dòng)以遞歸的方式導(dǎo)入任何被導(dǎo)入的類型庫引用的外部類型庫。如果您指定了 /reference 選項(xiàng),那么在導(dǎo)入其他類型庫之前,該工具將嘗試解析被引用程序集中的外部類型。 |
/silent | 取消顯示成功消息。 |
/strictref | 如果此工具不能解析當(dāng)前程序集、/reference 選項(xiàng)指定的程序集或已注冊(cè)的主互操作程序集 (PIA) 內(nèi)的所有引用,則不要導(dǎo)入類型庫。 |
/strictref:nopia | 與 /strictref 相同,但忽略 PIA。 |
/sysarray | 指定該工具將 COM 樣式 SafeArray 作為托管 System.Array 類類型導(dǎo)入。 |
/tlbreference:filename | 指定類型庫文件,用于在不參考注冊(cè)表的情況下解析類型庫引用。 請(qǐng)注意,此選項(xiàng)不加載某些較早的類型庫格式。但是,您仍可以通過注冊(cè)表或當(dāng)前目錄隱式加載較早的類型庫格式。 |
/transform:transformName | 按 transformName 參數(shù)的指定轉(zhuǎn)換元數(shù)據(jù)。 指定 dispret 作為 transformName 參數(shù),可以將僅支持調(diào)度的接口(調(diào)度接口)的方法的 [out, retval] 參數(shù)轉(zhuǎn)換為返回值。 有關(guān)此選項(xiàng)的更多信息,請(qǐng)參見本主題后面的示例。 |
/unsafe | 在不進(jìn)行 .NET Framework 安全檢查的情況下生成接口。調(diào)用以此方式公開的方法可能會(huì)導(dǎo)致安全風(fēng)險(xiǎn)。如果您不了解公開此類代碼的風(fēng)險(xiǎn),則不應(yīng)使用此選項(xiàng)。 |
/verbose | 指定詳細(xì)模式;顯示有關(guān)導(dǎo)入的類型庫的附加信息。 |
/? | 顯示該工具的命令語法和選項(xiàng)。 |
>
Tlbimp.exe 的命令行選項(xiàng)不區(qū)分大小寫,并可以按任何順序提供。只需指定足夠的選項(xiàng)來唯一標(biāo)識(shí)它。因此,/n 與 /nologo 等效,/ou:outfile.dll 與 /out:outfile.dll 等效。 |
備注:
Tlbimp.exe 同時(shí)執(zhí)行整個(gè)類型庫的轉(zhuǎn)換。該工具不能用于為在單個(gè)類型庫中定義的類型子集生成類型信息。
能夠?qū)?qiáng)名稱分配給程序集通常是有用或必需的。因此,Tlbimp.exe 包括相應(yīng)的選項(xiàng),用以提供必需的信息來生成具有強(qiáng)名稱的程序集。/keyfile: 和 /keycontainer: 選項(xiàng)均簽發(fā)具有強(qiáng)名稱的程序集。因此,一次只提供這些選項(xiàng)中的一個(gè)是合理的。
在從包含多個(gè)類型庫的模塊中導(dǎo)入類型庫時(shí),可以選擇將資源 ID 追加到一個(gè)類型庫文件中。只有當(dāng)類型庫文件位于當(dāng)前目錄或者您指定了完整的路徑時(shí),Tlbimp.exe 才能找到該文件。請(qǐng)參見本主題中后面的示例。