Visual Basic におけるグローバル属性
更新 : 2007 年 11 月
ほとんどの属性は、クラスやメソッドなどの特定の言語要素に結びつけられます。ただし、いくつかの属性はグローバルで、アセンブリ全体またはモジュール全体に適用できます。
Visual Studio 統合開発環境 (IDE: Integrated Development Environment) 内の属性の多くは、[アセンブリ情報] ダイアログ ボックスを通して設定できます。詳細については、「アプリケーション プロパティの管理」および「アセンブリおよびマニフェストへの署名の管理」を参照してください。
アセンブリ属性
アセンブリ レベルの属性は次の構文を使用して指定します。
<Assembly: Attribute1, Assembly: Attribute2..., Assembly: AttributeN>
モジュール レベルの属性も同様の構文を使用して指定します。
<Module: Attribute1, Module: Attribute2..., Module: AttributeN>
グローバル属性は、ソース コードの Option Explicit ステートメントや Imports ステートメントなどのトップ レベル ディレクティブの後に追加します。ただし、型や名前空間の宣言よりも前に追加します。グローバル属性はプロジェクト内の複数のソース ファイルに記述できますが、通常は、Visual Basic プロジェクトと共に自動的に作成される AssemblyInfo.vb ファイルに記述します。
アセンブリ属性は、アセンブリについての情報を提供する値です。アセンブリ属性は、以下のカテゴリに分けられます。
アセンブリ ID 属性
情報属性
アセンブリ マニフェスト属性
厳密な名前の属性
アセンブリ ID 属性
名前、バージョン、およびカルチャの 3 つの属性 (適用可能な場合は厳密な名前で) で、アセンブリの ID が決定されます。これらの属性は、アセンブリの完全な名前を形成し、コード内でアセンブリを参照するときに必要になります。アセンブリのバージョンとカルチャは、属性を使用して設定できます。ただし、名前の値は、コンパイラ、Visual Studio IDE ([アセンブリ情報] ダイアログ ボックス内で)、またはアセンブリ リンカ (Al.exe) によって、アセンブリが作成されるときにアセンブリ マニフェストを含むファイルに基づいて設定されます。AssemblyFlagsAttribute 属性は、アセンブリの複数のコピーが共存できるかどうかを指定します。
次の表は、ID 属性を示しています。
属性 |
目的 |
---|---|
アセンブリの ID を完全に記述します。 |
|
アセンブリのバージョンを指定します。 |
|
アセンブリがサポートするカルチャを指定します。 |
|
同一のコンピュータ上、同じプロセス内、または同じアプリケーション ドメイン内で、アセンブリが side-by-side 実行をサポートするかどうかを指定します。 |
次のコードは、アセンブリにバージョン属性とカルチャ属性を適用します。
'Set version number for assembly.
<Assembly: Reflection.AssemblyVersionAttribute("4.3.2.1")>
'Set culture as German.
<Assembly: Reflection.AssemblyCultureAttribute("de")>
情報属性
情報属性は、アセンブリに追加の会社情報または製品情報を指定する場合に使用できます。次の表は、System.Reflection 名前空間で定義されている情報属性を示しています。
属性 |
目的 |
---|---|
アセンブリ マニフェストの製品名を指定するカスタム属性を定義します。 |
|
アセンブリ マニフェストの商標を指定するカスタム属性を定義します。 |
|
アセンブリ マニフェストの補足バージョンを指定するカスタム属性を定義します。 |
|
アセンブリ マニフェストの会社名を指定するカスタム属性を定義します。 |
|
アセンブリ マニフェストの著作権を指定するカスタム属性を定義します。 |
|
Win32 ファイル バージョン リソースに特定のバージョン番号を使用するように、コンパイラに指示します。 |
|
アセンブリが共通言語仕様 (CLS: Common Language Specification) に準拠しているかどうかを示します。 |
アセンブリ マニフェスト属性
アセンブリ マニフェスト属性を使用すると、アセンブリ マニフェストの情報を指定できます。たとえば、タイトル、説明、既定のエイリアス、構成などです。次の表は、System.Reflection 名前空間で定義されているアセンブリ マニフェスト属性を示しています。
属性 |
目的 |
---|---|
アセンブリ マニフェストのアセンブリ タイトルを指定するカスタム属性を定義します。 |
|
アセンブリ マニフェストのアセンブリ説明を指定するカスタム属性を定義します。 |
|
アセンブリ マニフェストのアセンブリ構成 (リリース、デバッグなど) を指定するカスタム属性を定義します。 |
|
アセンブリ マニフェストのわかりやすい既定のエイリアスを定義します。 |
厳密な名前の属性
厳密な名前は、アセンブリの ID と整合性を保護する一意の識別子です。アセンブリの署名は、Visual Studio IDE 内から [署名] ページ (プロジェクト デザイナ)を通して行うことができます。詳細については、「アセンブリおよびマニフェストへの署名の管理」を参照してください。
また、厳密な名前の属性を使用して、アセンブリに厳密な名前を設定することもできます。次の表は、System.Reflection 名前空間で定義されている厳密な名前の属性を示しています。
属性 |
目的 |
---|---|
厳密な名前の署名用に実行ファイル内に予約領域を確保するかどうかを指定するブール型のクラスですが、実際の署名は後の段階で行われます。詳細については、「アセンブリへの遅延署名」を参照してください。 |
|
キーを含むファイルを示します。KeyFile の場所は、プロジェクトの出力ディレクトリ (%Project Directory%\obj\<configuration>) からの相対パスで指定する必要があります。たとえば、KeyFile がプロジェクト ディレクトリに置かれている場合、AssemblyKeyFile 属性は次のように指定します。 [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] |
|
コンピュータ上の暗号化サービス プロバイダ (CSP: Crypto Service Provider) にインストールされているキーを参照します。ファイルが署名されるように、キーを指定する必要があります。 |
KeyFile の値と KeyName の値を両方指定した場合は、次の処理が行われます。
KeyName が CSP で見つかった場合は、そのキーが使用されます。
KeyName が存在せず、KeyFile が存在する場合、KeyFile のキーが CSP にインストールされ、使用されます。
詳細については、「アセンブリのセキュリティに関する考慮事項」を参照してください。
アセンブリの署名
アセンブリに署名するには、厳密な名前を使用するか、署名を使用するという、相互に補完的な 2 種類の方法があります。署名は Visual Studio IDE の[署名] ページ (プロジェクト デザイナ)またはファイル署名ツール (Signcode.exe) を使用して行うことができます。厳密な名前を使用してアセンブリに署名すると、アセンブリ マニフェストを格納しているファイルに公開キー暗号化が追加されます。厳密な名前による署名では、名前の一意性の検証を支援し、名前の悪用を防止し、参照が解決されたときに呼び出し元に ID を提供できます。詳細については、「アセンブリおよびマニフェストへの署名の管理」および「方法 : 厳密な名前でアセンブリに署名する」を参照してください。
厳密な名前を使用してアセンブリに署名するには
厳密名ツール (Sn.exe) を使用して、キー ペアを含むキー ファイルを作成します。
Visual Basic プロジェクトで自動的に作成された AssemblyInfo.vb ファイルに、厳密な名前の属性を追加します。このファイルを編集するには、ソリューション エクスプローラでファイル名をダブルクリックします。
次の例では、遅延署名を使用して、myKey.snk という公開キー ファイルを持つ、厳密な名前が設定されたアセンブリを作成します。
<Assembly: Reflection.AssemblyKeyFile("myKey.snk")> <Assembly: Reflection.AssemblyDelaySign(True)>
メモ : コマンド ラインから /target:module オプションを使用してコンパイルする場合など、アセンブリを作成しない場合には、アセンブリ レベルの属性は無視されます。