Globale Attribute in Visual Basic
Aktualisiert: November 2007
Die meisten Attribute werden an spezifische Sprachelemente wie Klassen oder Methoden angefügt. Einige Attribute sind jedoch global gültig und gelten für eine gesamte Assembly bzw. ein gesamtes Modul.
Sie können viele Attribute in der integrierten Entwicklungsumgebung (IDE, Integrated Development Environment) von Visual Studio über das Dialogfeld "Assemblyinformationen" festlegen. Weitere Informationen finden Sie unter Verwalten von Anwendungseigenschaften und Verwalten der Signierung von Assemblys und Manifesten.
Assemblyattribute
Attribute auf Assemblyebene werden mit der folgenden Syntax angegeben:
<Assembly: Attribute1, Assembly: Attribute2..., Assembly: AttributeN>
Attribute auf Modulebene werden mit einer ähnlichen Syntax angegeben:
<Module: Attribute1, Module: Attribute2..., Module: AttributeN>
Globale Attribute müssen im Quellcode nach übergeordneten Direktiven wie Option Explicit- und Imports-Anweisungen, jedoch vor allen Typ- oder Namespacedeklarationen aufgeführt werden. Globale Attribute können in einem Projekt in mehreren Quelldateien auftreten. Im Allgemeinen werden sie jedoch in der Datei AssemblyInfo.vb abgelegt, die automatisch mit Visual Basic-Projekten erstellt wird.
Assemblyattribute sind Werte, die Informationen über eine Assembly liefern. Sie werden in die folgenden Kategorien eingeteilt:
Attribute für die Assemblyidentität
Informationsattribute
Attribute für Assemblymanifeste
Attribute für starke Namen
Attribute für die Assemblyidentität
Die Identität einer Assembly wird (ggf. mit einem starken Namen) durch drei Attribute bestimmt, nämlich die Attribute für Namen, Version und Kulturkreis. Diese Attribute bilden den vollständigen Namen der Assembly und werden benötigt, wenn im Code auf die Assembly verwiesen wird. Version und Kulturkreis einer Assembly können mithilfe von Attributen festgelegt werden. Der Namenswert wird jedoch durch den Compiler, über die IDE von Visual Studio im Dialogfeld "Assemblyinformationen" oder durch den Assemblylinker (Al.exe) festgelegt, wenn die Assembly erstellt wird. Dies erfolgt anhand der Datei, die das Assemblymanifest enthält. Das AssemblyFlagsAttribute-Attribut gibt an, ob gleichzeitig mehrere Kopien der Assembly vorhanden sein können.
In der folgenden Tabelle sind die Identitätsattribute aufgeführt.
Attribut |
Zweck |
---|---|
Liefert eine vollständige Beschreibung der Identität einer Assembly. |
|
Gibt die Version einer Assembly an. |
|
Gibt an, welchen Kulturkreis die Assembly unterstützt. |
|
Gibt an, ob eine Assembly die parallele Ausführung auf demselben Computer, im selben Prozess oder in derselben Anwendungsdomäne unterstützt. |
Durch den folgenden Code werden das Versions- und das Kulturattribut auf eine Assembly angewendet:
'Set version number for assembly.
<Assembly: Reflection.AssemblyVersionAttribute("4.3.2.1")>
'Set culture as German.
<Assembly: Reflection.AssemblyCultureAttribute("de")>
Informationsattribute
Mithilfe von Informationsattributen können Sie zusätzliche Firmen- oder Produktinformationen für eine Assembly bereitstellen. In der folgenden Tabelle sind die im System.Reflection-Namespace definierten Informationsattribute aufgeführt.
Attribut |
Zweck |
---|---|
Definiert ein benutzerdefiniertes Attribut, das einen Produktnamen für ein Assemblymanifest angibt. |
|
Definiert ein benutzerdefiniertes Attribut, das eine Marke für ein Assemblymanifest angibt. |
|
Definiert ein benutzerdefiniertes Attribut, das eine Informationsversion für ein Assemblymanifest angibt |
|
Definiert ein benutzerdefiniertes Attribut, das einen Firmennamen für ein Assemblymanifest angibt. |
|
Definiert ein benutzerdefiniertes Attribut, das ein Copyright für ein Assemblymanifest angibt. |
|
Weist den Compiler an, eine bestimmte Versionsnummer für die Win32-Dateiversionsressource zu verwenden. |
|
Gibt an, ob die Assembly mit der Common Language Specification (CLS) kompatibel ist. |
Attribute für Assemblymanifeste
Mithilfe von Assemblymanifestattributen können Sie die Informationen im Assemblymanifest bereitstellen. Dies schließt Titel, Beschreibung, Standardalias und Konfiguration ein. In der folgenden Tabelle sind die im System.Reflection-Namespace definierten Attribute für Assemblymanifeste aufgeführt.
Attribut |
Zweck |
---|---|
Definiert ein benutzerdefiniertes Attribut, das einen Assemblytitel für ein Assemblymanifest angibt. |
|
Definiert ein benutzerdefiniertes Attribut, das eine Assemblybeschreibung für ein Assemblymanifest angibt. |
|
Definiert ein benutzerdefiniertes Attribut, das eine Assemblykonfiguration (z. B. Verkaufs- oder Debugversion) für ein Assemblymanifest angibt. |
|
Definiert einen langen Standardalias für ein Assemblymanifest. |
Attribute für starke Namen
Starke Namen sind eindeutige Bezeichner, die die Identität und Integrität einer Assembly schützen. Sie können eine Assembly in der IDE von Visual Studio über die Seite "Signierung", Projekt-Designer signieren. Weitere Informationen finden Sie unter Verwalten der Signierung von Assemblys und Manifesten.
Sie können auch Attribute für starke Namen verwenden, um für eine Assembly einen starken Namen festzulegen. In der folgenden Tabelle sind die im System.Reflection-Namespace definierten Attribute für starke Namen aufgeführt.
Attribut |
Zweck |
---|---|
Boolescher Wert, der angibt, ob in der ausführbaren Datei Platz für die Signatur mit starkem Namen reserviert werden soll, das eigentliche Signieren jedoch zu einem späteren Zeitpunkt stattfinden soll. Weitere Informationen finden Sie unter Verzögertes Signieren einer Assembly. |
|
Gibt an, dass die Datei einen Schlüssel enthält. Der Speicherort von KeyFile muss relativ zum Ausgabeverzeichnis des Projekts sein, das %Project Directory%\obj\<Konfiguration> lautet. Wenn Ihre KeyFile z. B. im Projektverzeichnis gespeichert ist, würden Sie das AssemblyKeyFile-Attribut wie folgt angeben: [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] |
|
Verweist auf einen Schlüssel, der im CSP (Crypto Service Provider) des Computers gespeichert ist. Sie müssen einen Schlüssel angeben, damit die Datei signiert werden kann. |
Wenn die Werte für KeyFile und KeyName angegeben wurden, findet folgende Verarbeitung statt:
Wenn der KeyName im CSP enthalten ist, wird dieser Schlüssel verwendet.
Wenn kein KeyName vorhanden ist und KeyFile nicht existiert, wird der Schlüssel im CSP in KeyFile installiert und verwendet.
Weitere Informationen finden Sie unter Überlegungen zur Assemblysicherheit.
Signieren von Assemblys
Zum Signieren einer Assembly stehen Ihnen zwei verschiedene, sich jedoch ergänzende Möglichkeiten zur Verfügung: die Verwendung eines starken Namens oder die Signierung. Das Signieren kann in der IDE von Visual Studio über die Seite "Signierung", Projekt-Designer erfolgen oder durch die Verwendung von File Signing-Tool (Signcode.exe). Beim Signieren einer Assembly mit einem starken Namen wird der Datei, die das Assemblymanifest enthält, eine Verschlüsselung mit einem öffentlichen Schlüssel hinzugefügt. Das Signieren mit starkem Namen gewährleistet die Eindeutigkeit der Namen, verhindert das Vortäuschen von Namen (Spoofing) und stellt Aufrufern beim Auflösen eines Verweises eine Identität bereit. Weitere Informationen finden Sie unter Verwalten der Signierung von Assemblys und Manifesten und Gewusst wie: Signieren einer Assembly mit einem starken Namen.
So signieren Sie eine Assembly mit einem starken Namen
Mithilfe des Strong Name-Tool (Sn.exe) können Sie eine Schlüsseldatei generieren, die ein Schlüsselpaar enthält.
Fügen Sie der Datei AssemblyInfo.vb, die automatisch zusammen mit Visual Basic-Projekten erstellt wird, Attribute für starke Namen hinzu. Um diese Datei zu bearbeiten, doppelklicken Sie im Projektmappen-Explorer auf den Dateinamen.
Im folgenden Beispiel wird das verzögerte Signieren verwendet, um eine Assembly mit einem starken Namen mit einer Datei für einen öffentlichen Schlüssel mit dem Namen myKey.snk zu erstellen.
<Assembly: Reflection.AssemblyKeyFile("myKey.snk")> <Assembly: Reflection.AssemblyDelaySign(True)>
Hinweis: Wenn Sie keine Assembly erstellen, werden Attribute auf Assemblyebene ignoriert. Dies gilt z. B., wenn Sie an der Befehlszeile mit der Option /target:module kompilieren.
Siehe auch
Aufgaben
Gewusst wie: Definieren eigener Attribute
Gewusst wie: Signieren einer Assembly mit einem starken Namen
Konzepte
Überlegungen zur Assemblysicherheit
Referenz
File Signing-Tool (Signcode.exe)
Seite "Signierung", Projekt-Designer
Dialogfeld "Assemblyinformationen"
Weitere Ressourcen
Benutzerdefinierte Attribute in Visual Basic