Visual Basic 中的全域屬性
更新:2007 年 11 月
大部分的屬性 (Attribute) 會附加至特定的語言項目,例如類別或方法;但是,有些屬性是全域性,亦即它們適用於整個組件或模組。
您可以透過組件資訊對話方塊,在 Visual Studio 整合式開發環境 (IDE) 中設定許多屬性。如需詳細資訊,請參閱管理應用程式屬性和管理組件和資訊清單簽署。
組件屬性 (Attribute)
您可以使用下列語法指定組件層級 (Assembly-level) 的屬性:
<Assembly: Attribute1, Assembly: Attribute2..., Assembly: AttributeN>
您可以使用類似的語法指定模組層次的屬性:
<Module: Attribute1, Module: Attribute2..., Module: AttributeN>
您可以在原始程式碼中的任何最上層指示詞 (例如 Option Explicit 和 Imports 陳述式) 後面加入全域屬性,但是這些都必須放在任何型別或命名空間的宣告之前。全域屬性可出現在專案中的多個原始程式檔中,但是它們通常會被置於 Visual Basic 專案自動建立的 AssemblyInfo.vb 檔案中。
組件 (Assembly) 屬性值會提供關於組件的資訊。這些屬性 (Attribute) 可分類如下:
組件識別屬性 (Attribute)
資訊屬性 (Attribute)
組件資訊清單 (Assembly Manifest) 屬性 (Attribute)
強式名稱屬性
組件識別屬性
三種屬性 (Attribute) (如果允許的話再加上強式名稱) 會判斷組件的識別:名稱、版本和文化特性 (Culture)。這些屬性將形成組件的完整名稱,而且是在程式碼中參考組件時必須使用的屬性。您可以使用屬性 (Attribute) 來設定組件的版本和文化特性。但是,名稱值是由編譯器、組件資訊對話方塊中的 Visual Studio IDE 或「組件連結器」(Al.exe) 於建立組件時,根據包含組件資訊清單的檔案所設定。AssemblyFlagsAttribute 屬性會指定組件的多個複本是否可以共存。
下表顯示識別屬性 (Attribute)。
屬性 |
目的 |
---|---|
完整描述組件的識別。 |
|
指定組件的版本。 |
|
指定組件所支援的文化特性。 |
|
指定組件是支援在同一部電腦上、同一處理序中還是同一應用程式定義域中並存執行。 |
下列程式碼會將版本和文化特性屬性 (Attribute) 套用至組件:
'Set version number for assembly.
<Assembly: Reflection.AssemblyVersionAttribute("4.3.2.1")>
'Set culture as German.
<Assembly: Reflection.AssemblyCultureAttribute("de")>
資訊屬性
您可以使用資訊屬性來提供組件的其他公司或產品資訊。下表顯示在 System.Reflection 命名空間中定義的資訊屬性。
屬性 |
目的 |
---|---|
定義自訂屬性來指定組件資訊清單 (Assembly Manifest) 的產品名稱。 |
|
定義自訂屬性來指定組件資訊清單的商標。 |
|
定義自訂屬性來指定組件資訊清單的資訊版本。 |
|
定義自訂屬性來指定組件資訊清單的公司名稱。 |
|
定義自訂屬性來指定組件資訊清單的著作權。 |
|
針對 Win32 檔案版本資源,指示編譯器使用特定版本號碼。 |
|
指出組件是否符合 Common Language Specification (CLS) 標準。 |
組件資訊清單屬性
您可以使用組件資訊清單屬性,提供組件資訊清單中的資訊。其中包括標題、描述、預設別名和組態。下表顯示 System.Reflection 在命名空間中定義的組件資訊清單屬性。
屬性 |
目的 |
---|---|
定義自訂屬性來指定組件資訊清單的組件標題。 |
|
定義自訂屬性來指定組件資訊清單的組件描述。 |
|
定義自訂屬性來指定組件資訊清單的組件組態 (如正式版本或偵錯版本)。 |
|
為組件資訊清單定義一個易記的預設別名 |
強式名稱屬性
強式名稱是唯一的識別項,可保護識別及組件的完整。您可以透過專案設計工具、簽署頁,從 Visual Studio IDE 來簽署組件。如需詳細資訊,請參閱管理組件和資訊清單簽署。
或者,您可以使用強式名稱屬性來設定組件強式名稱。下表顯示在 System.Reflection 命名空間中定義的強式名稱屬性。
屬性 |
目的 |
---|---|
布林值,表示您是否要在可執行檔案中為強式名稱簽章保留空間,但是延後到後階段才實際簽名。如需詳細資訊,請參閱延遲簽署組件。 |
|
指示含有金鑰的檔案。KeyFile 的位置應該相對於專案輸出目錄,亦即 %Project Directory%\obj\<configuration>。例如,如果您的 KeyFile 位於專案目錄中,就可以將 AssemblyKeyFile 屬性 (Attribute) 指定為 [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] |
|
參考電腦中 Crypto Service Provider (CSP) 內安裝的金鑰 (Key)。您必須指定金鑰,才能簽署檔案。 |
如果已指定 KeyFile 和 KeyName 值,則會發生下列處理:
如果可在 CSP 中找到 KeyName,則會使用這個金鑰。
如果沒有 KeyName 但是有 KeyFile,則會在 CSP 中安裝 KeyFile 中的金鑰,並使用這個金鑰。
如需詳細資訊,請參閱組件安全性考量。
簽章組件
您可以用兩種不同但又互補的方式來簽署組件:使用強式名稱或使用簽章。您可以使用 Visual Studio IDE 專案設計工具、簽署頁或使用檔案簽署工具 (Signcode.exe) 來簽署。使用強式名稱簽署組件時,就會將公開金鑰加密加入至含有組件資訊清單的檔案中。強式名稱簽署可協助驗證唯一名稱、防止冒用名稱,並且在解析參考時為呼叫端提供某種識別。如需詳細資訊,請參閱 管理組件和資訊清單簽署和 HOW TO:使用強式名稱簽署組件。
若要使用強式名稱簽章組件
使用強式名稱工具 (Sn.exe) 產生含有金鑰組 (Key Pair) 的金鑰檔。
將強式名稱屬性加入至 AssemblyInfo.vb 檔案,該檔案是透過 Visual Basic 專案自動建立的。若要編輯這個檔案,請在 [方案總管] 中按兩下檔名。
下列範例會使用延遲簽署來建立強式名稱組件與名為 myKey.snk 的公開金鑰檔。
<Assembly: Reflection.AssemblyKeyFile("myKey.snk")> <Assembly: Reflection.AssemblyDelaySign(True)>
注意事項: 如果您不要建立組件,例如使用 /target:module 選項從命令列進行編譯時,就會忽略組件層級 (Assembly-level) 的屬性。