Unterstützung mehrerer Versionen derselben Komponente mit Visual Studio .NET 2003

Veröffentlicht: 23. Sep 2003 | Aktualisiert: 27. Jun 2004

Von Izzy Gryko

Dieser Artikel beschreibt, wie Sie mehrere Versionen derselben Komponente auf einem einzigen Computer in Visual Studio .NET 2003 unterstützen können. Dieser Artikel enthält auch Links zu englischsprachigen Seiten.

Auf dieser Seite

Einführung Einführung
Komponenteninstallation Komponenteninstallation
Richtlinien zum Veröffentlichen einer Komponente Richtlinien zum Veröffentlichen einer Komponente
Wie Visual Studio .NET 2003 mehrere Versionen einer Komponente unterstützt Wie Visual Studio .NET 2003 mehrere Versionen einer Komponente unterstützt
Einschränkungen Einschränkungen
Schlussfolgerung Schlussfolgerung

Einführung

Wenn Sie mehrere Versionen derselben Komponente unterstützen, können Ihre Benutzer folgende Aktionen ausführen:

  • Auf einem Computer, auf dem MyComponent Version 1.0 und MyComponent Version 2.0 parallel installiert sind, kann der Benutzer ein Projekt in Visual Studio .NET 2003 erstellen und in diesem Projekt einen Verweis auf MyComponent Version 2.0 hinzufügen (entweder durch Navigieren zu einem Dateinamen oder Verwenden der Registerkarte .NET im Dialogfeld Verweis hinzufügen). Wenn das Projekt erneut geöffnet wird, löst Visual Studio .NET 2003 den MyComponent-Verweis auf die korrekte Version der Komponente (Version 2.0) auf.

  • Auf einem Computer, auf dem MyComponent Version 1.0 installiert ist, kann der Benutzer ein Projekt in Visual Studio .NET 2003 erstellen und in diesem Projekt einen Verweis auf MyComponent Version 1.0 hinzufügen. Wenn der Benutzer auch MyComponent Version 2.0 parallel zur vorhandenen Version 1.0 installiert, löst Visual Studio beim erneuten Öffnen des Projekts den MyComponent-Verweis auf die korrekte Version der Komponente (Version 1.0) auf.

    Um das Projekt auf Version 2.0 von MyComponent zu aktualisieren, muss der Benutzer den ursprünglichen Verweis auf Version 1.0 löschen und einen neuen Verweis auf Version 2.0 hinzufügen.

 

Komponenteninstallation

Komponenten müssen ordnungsgemäß registriert sein, damit Visual Studio .NET 2003 mehrere Versionen unterstützt. Die ordnungsgemäße Registrierung umfasst folgende Schritte:

  • Installieren Sie die Komponente auf der Festplatte des Benutzers in einem anderen Speicherort als dem globalen Assemblycache (GAC). Wenn die Komponente von mehreren Anwendungen gemeinsam verwendet werden soll, sollten Sie sie auch im GAC installieren.

  • Registrieren Sie den installierten Speicherort der Komponente im Unterschlüssel AssemblyFolders, indem Sie den entsprechenden Registrierungsschlüssel unter einem der folgenden Schlüssel erstellen:

    • HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\7.1\AssemblyFolders

    • HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\7.1\AssemblyFolders

    • HKEY_CURRENT_USER\Software\Microsoft\.NETFramework\AssemblyFolders

    • HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders

      Anmerkung Registrieren Sie den installierten Speicherort einer Komponente nur in einem AssemblyFolder.

Um die Komponente zu registrieren, müssen Sie zunächst die Zugriffsebene für die Komponente festlegen und sie anschließend gemäß den folgenden Regeln im entsprechenden AssemblyFolder-Speicherort registrieren:

  • Soll die Komponente für einen einzelnen Benutzer und nur für Visual Studio .NET 2003 registriert werden, registrieren Sie sie in HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\7.1.

  • Soll die Komponente für alle Benutzer auf einem Computer und nur für Visual Studio .NET 2003 registriert werden, registrieren Sie sie in HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\7.1.

  • Soll die Komponente für einen einzelnen Benutzer für alle Versionen von Visual Studio registriert werden, registrieren Sie sie in HKEY_CURRENT_USER\Software\Microsoft\.NETFramework.

  • Soll die Komponente für alle Benutzer auf einem Computer und für alle Versionen von Visual Studio registriert werden, registrieren Sie sie in HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework.

    Anmerkung Wenn ein Pfad auf dem Datenträger mehr als eine Komponente enthält, müssen Sie nur einen AssemblyFolder-Registrierungseintrag erstellen. Mit diesem Eintrag werden alle Komponenten im registrierten Pfad gefunden.

 

Richtlinien zum Veröffentlichen einer Komponente

Verwenden Sie die folgenden Richtlinien zum Veröffentlichen einer neuen Version einer Komponente, die parallel zu früheren Versionen installiert wird:

  • Installieren Sie die neue Version der Komponente in einem anderen Verzeichnis auf der Festplatte des Benutzers.

    Anmerkung Es ist wichtig, zwischen dem Verzeichnis, in dem die neue Komponente installiert wird, und dem globalen Assemblycache (GAC) zu unterscheiden. Auch wenn Sie die Komponente im GAC für die Verwendung zur Laufzeit installieren, müssen Sie die Komponente ebenso in einem separaten Verzeichnis auf der Festplatte des Benutzers für die Verwendung zur Entwurfszeit installieren.

  • Erstellen Sie einen neuen Registrierungsschlüssel für die neue Komponente unter einem der vier angegebenen Registrierungsschlüssel.

  • Entfernen Sie den oder die Registrierungsschlüssel für frühere Versionen der Komponente nicht aus der Registrierung.

Halten Sie sich beim Veröffentlichen einer Komponente, die eine frühere Version derselben Komponente ersetzt, an folgende Richtlinien:

  • Verwenden Sie für die aktuelle Version der Komponente denselben Assemblynamen und Dateinamen wie für die zu ersetzende Version. Wenn sich der Dateiname ändert, wird bei Benutzern, die auf eine frühere Version der Komponente verwiesen haben, nicht automatisch auf die neue Version verwiesen.

  • Installieren Sie die neue Version der Komponente auf der Festplatte des Benutzers im selben Verzeichnis wie die Version, die ersetzt wird.

    Anmerkung Es ist sehr wichtig, zwischen dem Verzeichnis, in dem die neue Komponente installiert wird, und dem globalen Assemblycache (GAC) zu unterscheiden. Auch wenn Sie die Komponente im GAC für die Verwendung zur Laufzeit installieren, müssen Sie die Komponente ebenso in einem separaten Verzeichnis auf der Festplatte des Benutzers für die Verwendung zur Entwurfszeit installieren. Die neue und die alte Komponente können parallel im GAC installiert werden. Dadurch können Administratoren Richtlinien festlegen, mit denen gesteuert wird, welche Version der Komponente zur Laufzeit geladen wird.

  • Registrieren Sie die neue Version der Komponente im selben Registrierungsschlüssel wie die alte Version.

Anmerkung Speichern Sie die Komponente nicht im Verzeichnis %windir%\Microsoft.NET\Framework\v1.<x>, wobei <x> die Version von .NET Framework bezeichnet.

 

Wie Visual Studio .NET 2003 mehrere Versionen einer Komponente unterstützt

Anders als bei früheren Versionen behält Visual Studio .NET 2003 automatisch den Namen des AssemblyFolder bei, von dem aus auf eine Komponente verwiesen wurde. Auch andere verweisbezogene Informationen, wie z.B. der Assemblyname, werden beibehalten. Diese Schlüssel werden als Teil des <Reference>-XML-Elements in der Projektdatei im AssemblyKeyName-Attribut beibehalten. Der Wert dieses Attributs ist eine Zeichenfolge, die vom Speicherort des AssemblyFolder in der Registrierung abhängt. Visual Studio wendet folgende Regeln an, um den persistenten Wert des Attributs zu ermitteln:

  • HKEY_CURRENT_USER \SOFTWARE\Microsoft\VisualStudio\7.1\AssemblyFolders\<Schlüsselname>
    Die persistente Zeichenfolge in der Projektdatei lautet hkcu\<Schlüsselname>.

  • HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\VisualStudio\7.1\AssemblyFolders\<Schlüsselname>
    Die persistente Zeichenfolge in der Projektdatei lautet hklm\<Schlüsselname>.

  • HKEY_CURRENT_USER \SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\<Schlüsselname>
    Die persistente Zeichenfolge in der Projektdatei lautet hkcu\dn\<Schlüsselname>.

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\< Schlüsselname>
    Die persistente Zeichenfolge in der Projektdatei lautet hklm\dn\<Schlüsselname>.

Das AssemblyKeyName-Attribut wird in folgenden Situationen beibehalten:

  • Der Benutzer fügt über die Registerkarte .NET des Dialogfelds Verweis hinzufügen einen Verweis auf eine Assembly hinzu. In diesem Fall erkennt Visual Studio .NET 2003 den Namen und Speicherort des AssemblyFolder automatisch.

  • Der Benutzer navigiert zu einer Assemblydatei auf der Festplatte, und der Pfad zu dieser Datei ist in einem oder mehreren AssemblyFolders registriert. In diesem Fall durchsucht Visual Studio .NET 2003 die Liste aller AssemblyFolders auf dem Computer in der unter Komponenteninstallation angegebenen Reihenfolge. Der erste AssemblyFolder mit einem registrierten Pfad, der mit dem Pfad zur Datei übereinstimmt, wird im AssemblyKeyName-Attribut beibehalten.

    Anmerkung Wenn der Benutzer zu einer Assembly im Verzeichnis .NET Framework SDK navigiert, wird der AssemblyFolder-Name nicht beibehalten. Das Verzeichnis .NET Framework SDK erfährt eine Sonderbehandlung, und kein Komponentenhersteller sollte jemals versuchen, das Verzeichnis .NET Framework SDK in einem AssemblyFolder-Speicherort zu registrieren.

 

Einschränkungen

Für die Unterstützung von mehreren Versionen einer Komponente in Visual Studio .NET 2003 gelten folgende Einschränkungen:

  • Ein von Visual Studio .NET 2002 aktualisiertes Projekt behält nicht den Namen des AssemblyFolder bei, von dem aus auf eine Komponente verwiesen wurde. Um diese Informationen beizubehalten, muss der Benutzer den Verweis auf die betreffende(n) Komponente(n) manuell entfernen und lesen, nachdem das Projekt auf Visual Studio .NET 2003 aktualisiert wurde.

  • Dieses Feature kann nicht dazu verwendet werden, das Verweisen auf mehrere Versionen derselben Komponente im selben Projekt zu unterstützen.

  • Dieses Feature kann auch nicht dazu verwendet werden, das Verweisen auf mehrere Versionen von .NET Framework zu unterstützen.

 

Schlussfolgerung

In diesem Artikel wurde beschrieben, wie eine Komponente, die parallel zu früheren Versionen derselben Komponente installiert wird, ordnungsgemäß in Visual Studio .NET 2003 installiert, registriert und veröffentlicht wird. Anhand dieser Informationen können Sie aktualisierte Versionen der Komponente in Visual Studio .NET veröffentlichen, ohne Versionierungsprobleme für die Benutzer zu verursachen.