Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Über den Autor
Vorwort zur 4. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Klassendesign und Vererbung
4 Weitere .NET-Datentypen
5 Weitere Möglichkeiten von C#
6 Projektmanagement und Visual Studio 2008
7 Fehlerbehandlung und Debugging
8 LINQ
9 Multithreading und asynchrone Methodenaufrufe
10 Arbeiten mit Dateien und Streams
11 Serialisierung
12 Einige wichtige .NET-Klassen
13 Grundlagen zum Erstellen einer Windows-Anwendung
14 Die wichtigsten Steuerelemente
15 Tastatur- und Mausereignisse
16 MDI-Anwendungen
17 Grafische Programmierung mit GDI+
18 Das Drucken (Printing)
19 Steuerelemente entwickeln
20 Programmiertechniken
21 WPF – die Grundlagen
22 Die Layoutcontainer
23 Die WPF-Controls
24 Konzepte von WPF
25 ADO.NET – die Verbindung zu einer Datenbank herstellen
26 Die Datenbankabfrage
27 Der SqlDataAdapter
28 Daten im lokalen Speicher – das DataSet
29 Eine Datenbank aktualisieren
30 Stark typisierte DataSets
31 Weitergabe von Anwendungen
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual C# 2008 von Andreas Kuehnel
Das umfassende Handbuch
Buch: Visual C# 2008

Visual C# 2008
geb., mit DVD
1.366 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1172-7
Pfeil 6 Projektmanagement und Visual Studio 2008
Pfeil 6.1 Der Projekttyp »Klassenbibliothek«
Pfeil 6.1.1 Mehrere Projekte in einer Projektmappe verwalten
Pfeil 6.1.2 Die Zugriffsmodifizierer »public« und »internal«
Pfeil 6.1.3 Friend Assemblys
Pfeil 6.1.4 Einbinden einer Klassenbibliothek
Pfeil 6.2 Assemblys
Pfeil 6.2.1 Ein Überblick über das Konzept der Assemblys
Pfeil 6.2.2 Allgemeine Beschreibung privater und globaler Assemblys
Pfeil 6.2.3 Die Struktur einer Assembly
Pfeil 6.2.4 Globale Assemblys
Pfeil 6.3 Konfigurationsdateien
Pfeil 6.3.1 Die verschiedenen Konfigurationsdateien
Pfeil 6.3.2 Die Struktur einer Anwendungskonfigurationsdatei
Pfeil 6.3.3 Eine Anwendungskonfigurationsdatei mit Visual Studio 2008 bereitstellen
Pfeil 6.3.4 Einträge der Anwendungskonfigurationsdatei auswerten
Pfeil 6.3.5 Editierbare, anwendungsbezogene Einträge mit <appSettings>
Pfeil 6.4 Versionsumleitung in einer Konfigurationsdatei
Pfeil 6.4.1 Die Herausgeberrichtliniendatei
Pfeil 6.5 Die XML-Dokumentation
Pfeil 6.5.1 Die XML-Kommentar-Tags
Pfeil 6.5.2 Generieren der XML-Dokumentationsdatei
Pfeil 6.6 Der Klassendesigner (Class Designer)
Pfeil 6.6.1 Ein typisches Klassendiagramm
Pfeil 6.6.2 Hinzufügen und Ansicht von Klassendiagrammen
Pfeil 6.6.3 Die Toolbox des Klassendesigners
Pfeil 6.6.4 Das Fenster »Klassendetails«
Pfeil 6.6.5 Klassendiagramme als Bilder exportieren
Pfeil 6.7 Refactoring
Pfeil 6.7.1 Methode extrahieren
Pfeil 6.7.2 Bezeichner umbenennen
Pfeil 6.7.3 Felder einkapseln
Pfeil 6.7.4 Schnittstelle extrahieren
Pfeil 6.7.5 Die Parameterliste beeinflussen
Pfeil 6.8 Code Snippets (Codeausschnitte)
Pfeil 6.8.1 Codeausschnitte einfügen
Pfeil 6.8.2 Die Anatomie eines Codeausschnitts
Pfeil 6.8.3 Eigene Code Snippets definieren


Galileo Computing - Zum Seitenanfang

6.4 Versionsumleitung in einer Konfigurationsdatei Zur nächsten ÜberschriftZur vorigen Überschrift

Kommen wir zurück zu unserer Klassenbibliothek GeometricObjects. Zuletzt hatten wir diese als globale Assembly im Global Assembly Cache (GAC) eingetragen. Darüber hinaus hatten wir auch die Version 2.0.0.0 von GeometricObjects erstellt und mit einer Setup-Routine im GAC registriert. Die Testanwendung TestApplication, die mit Version 1.0.0.0 kompiliert und installiert worden ist, benutzt immer noch die ursprüngliche erste Version und kann noch nicht von der neueren profitieren. Angedeutet hatte ich zum Ende von Abschnitt 6.2.4 bereits, dass wir über eine Konfigurationsdatei erreichen können, dass TestApplication nicht mehr Version 1.0.0.0 aufruft, sondern die Version 2.0.0.0. Jetzt, nachdem Sie die Konfigurationsdateien kennengelernt haben, ist der Zeitpunkt gekommen, Ihnen das zu zeigen.

Natürlich können Sie die Anwendungskonfigurationsdatei mit allen notwendigen Einträgen manuell anlegen bzw. eine vorhandene ergänzen. Es geht aber einfacher über ein administratives Konfigurationstool, dessen Bedienung ich Ihnen nun Schritt für Schritt zeige.

Öffnen Sie über StartEinstellungenSystemsteuerung den Dialog Verwaltung, und doppelklicken Sie darin auf Microsoft .NET Framework 2.0-Konfiguration. In dem Fenster, das daraufhin angezeigt wird, öffnen Sie den Knoten Arbeitsplatz. Markieren Sie hier den untersten Listenpunkt, Anwendungen. Im rechten Teilbereich sehen Sie danach den Link Zu konfigurierende Anwendung hinzufügen (siehe Abbildung 6.17).

Abbildung 6.17 Das .NET-Konfigurationstool

Wenn Sie auf den Link klicken, können Sie in einem weiteren Fenster die Anwendung suchen, die Sie konfigurieren möchten. In unserem Fall ist es die Anwendung TestApplication.exe. Diese wird nun dem Knoten Anwendungen des Konfigurationstools hinzugefügt, während im rechten Bereich mehrere Links angeboten werden (siehe Abbildung 6.18).

Abbildung 6.18 Die zu konfigurierende Anwendung »TestApplication«

Klicken Sie auf Verwaltete konfigurierte Assemblys. Die Ansicht des rechten Fensterbereichs bietet Ihnen daraufhin mit Liste der konfigurierten Assemblys anzeigen und Assembly konfigurieren zwei Auswahlmöglichkeiten (siehe Abbildung 6.19). Sie müssen sich für letztgenannte entscheiden.

Abbildung 6.19 Konfigurierte Assemblys einer Anwendung

Geben Sie im Dialog Eine Assembly konfigurieren nun die entsprechende Assembly an. Da unser Ziel eine Versionsumleitung ist, müssen Sie GeometricObjects ausgehend vom in Abbildung 6.20 gezeigten Dialog suchen. Es wird Ihnen dabei eine Liste des GAC angezeigt, in der GeometricObjects zweimal vertreten ist (in den Versionen 1.0.0.0 und 2.0.0.0). Welche Sie auswählen, spielt im Zusammenhang mit unserer Zielsetzung keine Rolle. Dass Sie im oberen Bereich der deutschen Version des Konfigurationstools einen schwarzen Bereich sehen … na ja, auch Microsofts Entwicklerteam ist bekanntlich nicht ganz »unfehlbar«.

Abbildung 6.20 Der Eintrag der zu konfigurierenden Assembly

Abbildung 6.21 Fenster, um die globale Assembly zu konfigurieren

Nachdem Sie die zu konfigurierende Assembly GeometricObjects bekannt gegeben haben und im Dialog der Abbildung 6.20 auf Fertig stellen geklickt haben, wird ein neues Fenster geöffnet, wie in Abbildung 6.21 gezeigt. Hier aktivieren Sie den Karteireiter Bindungsrichtlinie. Der Moment ist gekommen, um nun endlich die aufzurufende Version der Assembly GeometricObjects für die Anwendung TestApplication festzulegen. Nehmen Sie die Einträge wie in Abbildung 6.22 vor, und schließen Sie dann das Konfigurationstool.

Abbildung 6.22 Angabe der neuen Assemblyversion

Navigieren Sie nun zu der Installation von TestApplication.exe. Sie werden sofort sehen, dass das Konfigurationstool eine Anwendungskonfigurationsdatei erzeugt hat. Starten Sie TestApplication, wird die neuere Version von GeometricObjects aufgerufen, was Sie an der Konsolenausgabe »2.0.0.0« erkennen.

Tatsächlich ist es uns gelungen, eine Anwendung ohne Neukompilierung anzuweisen, eine andere externe Komponentenversion aufzurufen. Angenommen, die externe Komponente ist nicht abwärtskompatibel und die darauf zugreifende Anwendung hat Probleme mit ihr, dann können Sie in der Anwendungskonfigurationsdatei die Versionsumleitung wieder löschen. Sollten Sie in der Vergangenheit COM/ActiveX programmiert haben, werden Sie bestimmt begeistert sein, welche Möglichkeiten .NET in Verbindung mit dem GAC bietet – ohne dass man sich in einem Dickicht von Komplexitäten zu verirrt.

Werfen wir zum Schluss auch noch einen Blick in die vom Konfigurationstool erzeugte Anwendungskonfigurationsdatei:

<?xml version="1.0"?> 
<configuration> 
  <runtime> 
    <assemblyBinding 
             xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
        <assemblyIdentity name="GeometricObjects" 
                          publicKeyToken="3e8e8aeaabe7ee94" /> 
        <publisherPolicy apply="yes" /> 
        <bindingRedirect oldVersion="1.0.0.0" 
                         newVersion="2.0.0.0" /> 
      </dependentAssembly> 
    </assemblyBinding> 
  </runtime> 
</configuration>

Maßgeblich sind die beiden Attribute oldVersion und newVersion, die die Versionsumleitung bewirken. Wie reagiert aber die Laufzeitumgebung, wenn unter oldVersion und/oder newVersion Angaben enthalten sind, die nicht den Einträgen im GAC entsprechen?

Die Angabe der alten, zu ersetzenden Komponentenversion spielt zunächst keine Rolle. Existiert die Version nicht, wird die Versionsumleitung ignoriert und die notwendige Bindungsinformation aus dem Manifest bezogen. Etwas sensibler ist die Reaktion, wenn oldVersion einen gültigen Eintrag im Global Assembly Cache beschreibt und unter newVersion eine Versionsnummer angegeben ist, die im GAC nicht vertreten ist – es kommt zu einem Laufzeitfehler vom Typ FileLoadException. Verweist das Attribut oldVersion auf eine Komponentenversion, die im GAC registriert ist, muss auch das Attribut newVersion eine bekannte Versionsnummer beinhalten.

Häufig kommt es vor, dass mehrere ältere Versionen durch eine neue ersetzt werden können. Um einer Anwendungskonfigurationsdatei mehr Allgemeingültigkeit mit auf den Weg zu geben, kann man hinter oldVersion einen Versionsbereich festlegen, z. B.:

<bindingRedirect oldVersion="3.0.3.0-3.0.7.0" newVersion="3.0.12.0"/>

Sind auf dem Anwenderrechner mehrere .NET-Anwendungen installiert, die sich der Komponente GeometricObjects bedienen, müssen Sie nicht zu jeder Anwendung eine Anwendungskonfigurationsdatei bereitstellen, um den Aufruf auf die neuere Version zu initiieren. Tragen Sie stattdessen alle mit der Umleitung in Beziehung stehenden XML-Elemente in machine.config ein.


Galileo Computing - Zum Seitenanfang

6.4.1 Die Herausgeberrichtliniendatei topZur vorigen Überschrift

Eine Herausgeberrichtliniendatei ist eine Konfigurationsdatei, die vom Komponentenentwickler zu einer Assembly kompiliert und im GAC installiert worden ist. Das Kompilat, die sogenannte Herausgeberrichtlinienassembly, wird zusammen mit einer überarbeiteten globalen Assembly ausgeliefert. Herausgeberrichtliniendateien bieten sich insbesondere dann an, wenn in der älteren Version einer globalen Assembly ein Fehler festgestellt wurde und der Entwickler der globalen Assembly sicherstellen möchte, dass sich alle Anwendungen an die neue Version binden.

Der Inhalt der Herausgeberrichtliniendatei entspricht strukturell dem einer Anwendungskonfigurationsdatei. Der Name der Datei darf beliebig festgelegt werden. Für das Erzeugen der Herausgeberrichtlinienassembly müssen Sie allerdings auf ein Kommandozeilentool zurückgreifen, weil es keinen entsprechenden Assistenten im Visual Studio 2008 gibt. Bei dem Tool handelt es sich um den Assembly Linker al.exe, der im Verzeichnis

\Windows\Microsoft. NET\Framework\v<Frameworkversionsnummer>

zu finden ist.

An der Eingabeaufforderung muss ein verhältnismäßig komplexer Befehl abgesetzt werden, in dem zuerst der Name der Publisherrichtliniendatei, also der XML-Datei, angegeben wird, daran anschließend der Name der resultierenden Herausgeberrichtlinienassembly und zum Schluss auch noch die Schlüsseldatei.

al /link:<Publisherrichtliniendatei> /out:<Ausgabedatei> /keyfile:<SNK-Datei>

Dem Bezeichner der Ausgabedatei, also der Herausgeberrichtlinienassembly, ist besondere Aufmerksamkeit zu widmen, da sie ein besonderes Format aufweisen muss. Er könnte beispielsweise lauten:

policy.1.0.GeometricObjects.dll

Dem Bezeichner ist das Wort policy voranzustellen, dem sich, jeweils durch einen Punkt getrennt, die Versionsnummer der Assembly anschließt, die aus einer Haupt- und einer Nebennummer besteht. Danach wird noch die DLL-Datei der Assemblierung genannt.

Damit könnte der Befehl zur Generierung einer Publisherrichtlinienassembly wie folgt lauten:

al /link:new.config /out:policy.1.0.GeometricObjects.dll /keyfile:MyKey.snk

Eine Bindung an eine neue Assemblyversion im GAC umzuleiten, ist ein gravierender Eingriff auf dem Rechner eines Benutzers. Durch die Angabe der Schlüsseldatei, die natürlich dieselbe sein muss, mit der auch der starke Name der Assembly erzeugt wird, sichert der Entwickler seine Berechtigung für diesen Eingriff zu.

Die Herausgeberrichtlinienassembly muss zusammen mit der Assembly im GAC installiert werden. Dazu können Sie wieder das Tool gacutil mit dem Schalter »/i« benutzen, z. B.:

gacutil /i policy.1.0.ProcessServer.dll

Einfacher ist es auch hier, die Herausgeberrichtlinienassembly zusammen mit der überarbeiteten globalen Assembly in eine Installationsroutine des Windows Installers zu verpacken, um den Prozess benutzerfreundlich zu automatisieren.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Visual C# 2008
Visual C# 2008
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Visual C# 2012






 Visual C# 2012


Zum Katalog: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: C++ Handbuch






 C++ Handbuch


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de