Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dieser Artikel ist spezifisch für .NET Framework. Sie gilt nicht für neuere Implementierungen von .NET, einschließlich .NET 6 und höherer Versionen.
Befolgen Sie die folgenden allgemeinen Richtlinien, um verwaltete Anwendungen oder Komponenten zu erstellen, die für die parallele Ausführung entwickelt wurden:
Binden der Typidentität an eine bestimmte Version einer Datei.
Die Common Language Runtime bindet die Identität des Typs an eine bestimmte Dateiversion mithilfe von stark benannten Assemblies. Um eine Anwendung oder Komponente für die parallele Ausführung zu erstellen, müssen Sie allen Assemblys einen starken Namen geben. Auf diese Weise wird eine genaue Typidentität erstellt und sichergestellt, dass jede Typauflösung zur richtigen Datei geleitet wird. Eine Assembly mit starkem Namen enthält Informationen zu Version, Kultur und Verleger, anhand der die Common Language Runtime die richtige Datei zur Erfüllung einer Bindungsanforderung sucht.
Verwenden Sie versionsbasierten Speicher.
Die Laufzeit verwendet den globalen Assemblycache, um versionsbasierten Speicher bereitzustellen. Der globale Assemblycache ist eine versionsbasierte Verzeichnisstruktur, die auf jedem Computer installiert ist, auf dem .NET Framework verwendet wird. Assemblys, die im globalen Assemblycache installiert sind, werden nicht überschrieben, wenn eine neue Version dieser Assembly installiert ist.
Erstellen Sie eine Anwendung oder Komponente, die isoliert ausgeführt wird.
Eine Anwendung oder Komponente, die isoliert ausgeführt wird, muss Ressourcen verwalten, um Konflikte zu vermeiden, wenn zwei Instanzen der Anwendung oder Komponente gleichzeitig ausgeführt werden. Die Anwendung oder Komponente muss auch eine versionsspezifische Dateistruktur verwenden.
Anwendungs- und Komponentenisolation
Ein Schlüssel zum erfolgreichen Entwerfen einer Anwendung oder Komponente für die parallele Ausführung ist die Isolation. Die Anwendung oder Komponente muss alle Ressourcen, insbesondere Datei-E/A, isoliert verwalten. Befolgen Sie die folgenden Richtlinien, um sicherzustellen, dass Ihre Anwendung oder Komponente isoliert ausgeführt wird:
Schreiben Sie versionsspezifische Werte in die Registrierung. Speichern Sie Werte in Hives oder Schlüsseln, die die Version angeben, und teilen Sie keine Informationen oder den Status zwischen Versionen einer Komponente. Dadurch wird verhindert, dass zwei Anwendungen oder Komponenten gleichzeitig Informationen überschreiben.
Machen Sie benannte Kernelobjekte versionsspezifisch, sodass keine Racebedingung auftritt. Eine Racebedingung tritt z. B. auf, wenn zwei Semaphore zweier verschiedener Versionen derselben Anwendung aufeinander warten.
Datei- und Verzeichnisnamen versionsfähig machen. Dies bedeutet, dass Dateistrukturen auf Versionsinformationen angewiesen sein sollten.
Erstellen Sie Benutzerkonten und Gruppen auf versionsspezifische Weise. Benutzerkonten und Gruppen, die von einer Anwendung erstellt wurden, sollten anhand der Version identifiziert werden. Teilen Sie keine Benutzerkonten und Gruppen zwischen verschiedenen Versionen einer Anwendung.
Installieren und Deinstallieren von Versionen
Befolgen Sie beim Entwerfen einer Anwendung für die parallele Ausführung die folgenden Richtlinien zum Installieren und Deinstallieren von Versionen:
Löschen Sie keine Informationen aus der Registrierung, die möglicherweise von anderen Anwendungen benötigt werden, die unter einer anderen Version von .NET Framework ausgeführt werden.
Ersetzen Sie keine Informationen in der Registrierung, die von anderen Anwendungen benötigt werden können, die unter einer anderen Version von .NET Framework ausgeführt werden.
Heben Sie die Registrierung von COM-Komponenten nicht auf, die von anderen Anwendungen benötigt werden, die unter einer anderen Version von .NET Framework ausgeführt werden.
Ändern Sie "InprocServer32 " oder andere Registrierungseinträge für einen BEREITS registrierten COM-Server nicht.
Löschen Sie keine Benutzerkonten oder Gruppen, die von anderen Anwendungen benötigt werden, die unter einer anderen Version von .NET Framework ausgeführt werden.
Fügen Sie der Registrierung nichts hinzu, das einen nicht geversionten Pfad enthält.
Dateiversionsnummer und Assemblyversionsnummer
Die Dateiversion ist eine Win32-Versionsressource, die nicht von der Laufzeit verwendet wird. Im Allgemeinen aktualisieren Sie die Dateiversion sogar für ein direktes Update. Zwei identische Dateien können unterschiedliche Dateiversionsinformationen enthalten, und zwei verschiedene Dateien können die gleichen Dateiversionsinformationen enthalten.
Die Laufzeit verwendet die Assemblyversion für die Assemblybindung. Zwei identische Assemblys mit unterschiedlichen Versionsnummern werden von der Laufzeit als zwei unterschiedliche Assemblys behandelt.
Mit dem Tool für den globalen Assemblycache (Gacutil.exe) können Sie eine Assembly ersetzen, wenn nur die Dateiversionsnummer neuer ist. Der Installer führt in in der Regel nur dann eine Installation über eine Assembly durch, wenn die Assemblyversionsnummer höher ist.