匯出的組件轉換

任何將組件匯出至型別程式庫的工具或 API,都必須先轉換最外層的 Managed 組件。 處理序會將每一個個別組件轉換成單一型別程式庫,在組件和型別程式庫之間採用一對一的對應。 您不能將一個組件分割成好幾個型別程式庫。 不論轉換的細節或方式如何,一個組件會相當一致地產生同樣的型別程式庫。

組件和型別程式庫的識別

組件識別是由下表中所列的四個項目構成。

項目

描述

名稱

用來識別組件的字串。 通常,這個字串與不含附檔名的組件檔案名稱相同

公開金鑰

公開/私密密碼編譯金鑰組 (Key Pair) 的公開部分

版本

由主要、次要、組建和修訂編號四個部分構成的數字字串

文化特性字串

組件支援的地區設定 (Locale)

組合在一起之後,這些欄位就構成了識別組件的強式名稱。

t1ztw645.collapse_all(zh-tw,VS.110).gif部分組件資訊清單

.assembly Sample as "Sample"
{
    publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00   
                 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00   
                 B7 3C 60 FD 2D 6B E4 14 4E BD D1 B6 1A 09 FB F1   
                 23 FF A8 62 59 B3 86 0B 0A 73 10 98 51 E5 0E D6   
                 7E 10 2F A7 6E AF 1B E5 E8 F1 2E E6 9C F7 74 9A   
                 1A 9A 83 88 2C 70 C9 8B 52 AD 97 5C 23 52 D2 42   
                 D2 6C 64 14 E7 1D 1D 55 B4 F4 9C BB 86 7B 07 99   
                 E3 19 E8 E1 4A BC 7A 40 A6 A2 9D AD 96 9B E5 CA   
                 7C 10 5B 79 16 80 29 50 CD C3 63 D0 12 81 D0 18   
                 B4 AE DA EC CC ED 8E AF A4 08 14 05 C6 9C 7B C5)
  .ver 1:0:295:37445
  .locale = (65 00 6E 00 2D 00 55 00 53 00 00 00 )   // en-US
}

相反地,型別程式庫識別是由三個項目所組成:程式庫識別項 (LIBID)、版本和本機識別 (LCID)。 含有型別資訊的檔案名稱和程式庫內定義的易記名稱,都不是這個程式庫識別的一部分。 您可以使用型別程式庫的 LIBID、版本及 LCID 透過登錄找到它。

t1ztw645.collapse_all(zh-tw,VS.110).gif型別程式庫表示

[ uuid(0D26FC72-7EB1-4565-AA75-DA5F177EFA66),
  lcid(0x0409), 
  version(2.1), 
  helpstring("Acme Widget Library")
] 
library Acme 
{
…
}; 

程式庫識別項 (LIBID)

當匯出處理序將組件轉換為型別程式庫時,它會保存程式庫的識別。 每一個唯一識別的組件,都會成為一個唯一識別的型別程式庫。 為了確保這個唯一性,轉換處理序會使用組件的名稱、版本和公開金鑰來產生 LIBID。

更明確地講,這個組合提供了下列保證:

  • 名稱、版本和公開金鑰組合可一致地產生同樣的 LIBID

  • 不同名稱、版本和公開金鑰組合的兩個組件,絕不會產生同樣的 LIBID

您可以套用 GuidAttribute,來明確設定 LIBID。

版本和組建編號

轉換處理序也會將版本資訊從組件傳遞到型別程式庫,不過型別程式庫只含有兩個部分的版本號碼,而組件則含有四個部分的版本號碼。 組件的主要和次要版本號碼會被轉送到型別程式庫。 組件的組建編號 (Build Number) 會在轉換中被捨棄,這表示只有組建編號不同的兩個組件,永遠會產生一樣的型別程式庫。 以 0 表示主號和次號 (0.0.X.X) 的組件會產生版本號碼為 1.0 的型別程式庫。

一般而言,從多個組件版本產生的型別程式庫,其內容是無法保證的。 在某個特定程式庫 1.0 版中定義的型別,不保證一定會在相同程式庫的第二版中。

地區設定資訊

組件的地區設定識別項字串 (例如 us-en) 會轉換成 LCID,並且儲存在型別程式庫中的 LCID 欄位。 如果組件中沒有地區設定識別項字串,匯出處理序會將 LCID 設定為 0。

句號轉換為底線

組件名稱常會含有句號,這在型別程式庫名稱中是不允許的。 匯出處理序會將組件名稱欄位中的句號轉換成底線。

Helpstring

如果已在設計階段套用至組件,匯出處理序會將 AssemblyDescriptionAttribute 複製到與型別程式庫關聯的 helpstring 或 DocString。 型別程式庫中的 HelpFile 欄位或 HelpContext 欄位都未設定。 型別程式庫中的 LIBFLAGS 也都沒有設定。

其他組件欄位

其他組件欄位 (例如 ProcessorOSInformationCodeBaseAliasAssemblyHashConfigurationFlags) 都會在轉換期間捨棄。

匯出處理序不會設定 hiddenrestrictedcontrol 這類型別程式庫屬性。

請參閱

概念

匯出的模組轉換

匯出的類型轉換

匯出的成員轉換

匯出的參數轉換

其他資源

組件至類型程式庫轉換的摘要