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

Inhaltsverzeichnis
Vorwort zur 5. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Weitere .NET-Datentypen
7 Weitere Möglichkeiten von C#
8 Auflistungsklassen (Collections)
9 Fehlerbehandlung und Debugging
10 LINQ to Objects
11 Multithreading und die Task Parallel Library (TPL)
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 Einige wichtige .NET-Klassen
15 Projektmanagement und Visual Studio 2010
16 XML
17 WPF – Die Grundlagen
18 WPF-Containerelemente
19 WPF-Steuerelemente
20 Konzepte der WPF
21 Datenbindung
22 2D-Grafik
23 ADO.NET – verbindungsorientierte Objekte
24 ADO.NET – Das Command-Objekt
25 ADO.NET – Der SqlDataAdapter
26 ADO.NET – Daten im lokalen Speicher
27 ADO.NET – Aktualisieren der Datenbank
28 Stark typisierte DataSets
29 LINQ to SQL
30 Weitergabe von Anwendungen
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual C# 2010 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2010

Visual C# 2010
geb., mit DVD
1295 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1552-7
Pfeil 15 Projektmanagement und Visual Studio 2010
Pfeil 15.1 Der Projekttyp »Klassenbibliothek«
Pfeil 15.1.1 Mehrere Projekte in einer Projektmappe verwalten
Pfeil 15.1.2 Die Zugriffsmodifizierer »public« und »internal«
Pfeil 15.1.3 Friend-Assemblys
Pfeil 15.1.4 Einbinden einer Klassenbibliothek
Pfeil 15.2 Assemblys
Pfeil 15.2.1 Konzept der Assemblys
Pfeil 15.2.2 Allgemeine Beschreibung privater und globaler Assemblys
Pfeil 15.2.3 Struktur einer Assembly
Pfeil 15.2.4 Globale Assemblys
Pfeil 15.3 Konfigurationsdateien
Pfeil 15.3.1 Einführung
Pfeil 15.3.2 Die verschiedenen Konfigurationsdateien
Pfeil 15.3.3 Struktur einer Anwendungskonfigurationsdatei
Pfeil 15.3.4 Anwendungskonfigurationsdatei mit Visual Studio 2010 bereitstellen
Pfeil 15.3.5 Einträge der Anwendungskonfigurationsdatei auswerten
Pfeil 15.3.6 Editierbare, anwendungsbezogene Einträge mit <appSettings>
Pfeil 15.4 Versionsumleitung in einer Konfigurationsdatei
Pfeil 15.4.1 Herausgeberrichtliniendatei
Pfeil 15.5 XML-Dokumentation
Pfeil 15.5.1 Prinzip der XML-Dokumentation
Pfeil 15.5.2 XML-Kommentar-Tags
Pfeil 15.5.3 Generieren der XML-Dokumentationsdatei
Pfeil 15.6 Der Klassendesigner (Class Designer)
Pfeil 15.6.1 Ein typisches Klassendiagramm
Pfeil 15.6.2 Hinzufügen und Ansicht von Klassendiagrammen
Pfeil 15.6.3 Die Toolbox des Klassendesigners
Pfeil 15.6.4 Das Fenster »Klassendetails«
Pfeil 15.6.5 Klassendiagramme als Bilder exportieren
Pfeil 15.7 Refactoring
Pfeil 15.7.1 Methode extrahieren
Pfeil 15.7.2 Bezeichner umbenennen
Pfeil 15.7.3 Felder einkapseln
Pfeil 15.8 Code Snippets (Codeausschnitte)
Pfeil 15.8.1 Codeausschnitte einfügen
Pfeil 15.8.2 Anatomie eines Codeausschnitts


Galileo Computing - Zum Seitenanfang

15.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 15.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 die Systemsteuerung 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 15.16).

Abbildung 15.16 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 15.17).

Abbildung 15.17 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 15.18). Sie müssen sich für letztgenannte entscheiden.

Abbildung 15.18 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 15.19 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 15.19 Der Eintrag der zu konfigurierenden Assembly

Nachdem Sie die zu konfigurierende Assembly GeometricObjects bekannt gegeben haben und im Dialog auf Fertig stellen geklickt haben, wird ein neues Fenster geöffnet, wie in Abbildung 15.20 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 15.21 vor, und schließen Sie dann das Konfigurationstool.

Abbildung 15.20 Das Fenster, um die globale Assembly zu konfigurieren

Abbildung 15.21 Angabe der neuen Assembly-Version

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.

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 unter newVersion eine Versionsnummer angegeben ist, die im GAC nicht vertreten ist – es kommt zu einem Laufzeitfehler vom Typ FileLoadException. Es gilt die Regel: 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, zum Beispiel:


<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

15.4.1 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 Herausgeberrichtlinien-Assembly, 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 Herausgeberrichtlinien-Assembly müssen Sie allerdings auf ein Kommandozeilentool zurückgreifen, weil es keinen entsprechenden Assistenten in Visual Studio 2010 gibt. Bei dem Tool handelt es sich um den Assembly Linker al.exe, der im Verzeichnis

\Programme\Microsoft SDKs\Windows\v7.0A\bin

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 Herausgeberrichtlinien-Assembly und zum Schluss auch noch die Schlüsseldatei:


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

Dem Bezeichner der Ausgabedatei, also der Herausgeberrichtlinien-Assembly, ist besondere Aufmerksamkeit zu widmen, da er 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 Publisherrichtlinien-Assembly wie folgt lauten:


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

Eine Bindung an eine neue Assembly-Version 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 Herausgeberrichtlinien-Assembly muss zusammen mit der Assembly im GAC installiert werden. Dazu können Sie wieder das Tool gacutil mit dem Schalter /i benutzen, z. B. so:


gacutil /i policy.1.0.ProcessServer.dll

Einfacher ist es auch hier, die Herausgeberrichtlinien-Assembly 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# 2010

Visual C# 2010
Jetzt bestellen


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

 Buchempfehlungen
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


Zum Katalog: C/C++






 C/C++


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2010
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.


Nutzungsbestimmungen | Datenschutz | Impressum

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

Cookie-Einstellungen ändern