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

AssemblyName

Liefert eine vollständige Beschreibung der Identität einer Assembly.

AssemblyVersionAttribute

Gibt die Version einer Assembly an.

AssemblyCultureAttribute

Gibt an, welchen Kulturkreis die Assembly unterstützt.

AssemblyFlagsAttribute

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

AssemblyProductAttribute

Definiert ein benutzerdefiniertes Attribut, das einen Produktnamen für ein Assemblymanifest angibt.

AssemblyTrademarkAttribute

Definiert ein benutzerdefiniertes Attribut, das eine Marke für ein Assemblymanifest angibt.

AssemblyInformationalVersionAttribute

Definiert ein benutzerdefiniertes Attribut, das eine Informationsversion für ein Assemblymanifest angibt

AssemblyCompanyAttribute

Definiert ein benutzerdefiniertes Attribut, das einen Firmennamen für ein Assemblymanifest angibt.

AssemblyCopyrightAttribute

Definiert ein benutzerdefiniertes Attribut, das ein Copyright für ein Assemblymanifest angibt.

AssemblyFileVersionAttribute

Weist den Compiler an, eine bestimmte Versionsnummer für die Win32-Dateiversionsressource zu verwenden.

CLSCompliantAttribute

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

AssemblyTitleAttribute

Definiert ein benutzerdefiniertes Attribut, das einen Assemblytitel für ein Assemblymanifest angibt.

AssemblyDescriptionAttribute

Definiert ein benutzerdefiniertes Attribut, das eine Assemblybeschreibung für ein Assemblymanifest angibt.

AssemblyConfigurationAttribute

Definiert ein benutzerdefiniertes Attribut, das eine Assemblykonfiguration (z. B. Verkaufs- oder Debugversion) für ein Assemblymanifest angibt.

AssemblyDefaultAliasAttribute

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

AssemblyDelaySignAttribute

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.

AssemblyKeyFileAttribute

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")]

AssemblyKeyNameAttribute

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

  1. Mithilfe des Strong Name-Tool (Sn.exe) können Sie eine Schlüsseldatei generieren, die ein Schlüsselpaar enthält.

  2. 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

Anwendung von Attributen

Überlegungen zur Assemblysicherheit

Referenz

Strong Name-Tool (Sn.exe)

File Signing-Tool (Signcode.exe)

Seite "Signierung", Projekt-Designer

Dialogfeld "Assemblyinformationen"

Weitere Ressourcen

Benutzerdefinierte Attribute in Visual Basic

Verwalten von Anwendungseigenschaften

Verwalten der Signierung von Assemblys und Manifesten