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

15 Projektmanagement und Visual Studio 2010

In diesem Kapitel erfahren Sie, wie Sie Klassen in anderen Anwendungen wiederverwenden, Assemblys einsetzen und Konfigurationsdateien und XML-Doumentationen für Ihre Anwendungen erstellen. Außerdem lernen Sie den Klassendesigner von Visual Studio 2010 kennen und werden mit den Tools für das Refactoring und die nützlichen Code Snippets vertraut gemacht.


Galileo Computing - Zum Seitenanfang

15.1 Der Projekttyp »Klassenbibliothek« Zur nächsten ÜberschriftZur vorigen Überschrift

Insbesondere in Kapitel 3, »Klassendesign«, Kapitel 4, »Vererbung. Polymorphie und Interfaces«, und Kapitel 5, »Delegates und Ereignisse«, haben wir mit GeometricObjects eine etwas größere Anwendung entwickelt, in deren Mittelpunkt die Klassen Circle, GraphicCircle, Rectangle, GraphicRectangle und GeometricObject standen. Alle Klassen haben wir auf Grundlage der Projektvorlage einer Konsolenanwendung entwickelt. Das Kompilat ist eine EXE-Datei. Denken wir nun einen Schritt weiter, und nehmen wir an, die Klassen seien so genial, dass wir sie auch in anderen Anwendungen benutzen wollen. Auf die in einer EXE-Datei enthaltenen Typdefinitionen, also Klassen, Strukturen, Delegates usw. kann aber aus anderen Anwendungen heraus grundsätzlich nicht zugegriffen werden. Dazu müssen die zu veröffentlichenden Typen in einer Datei implementiert sein, deren Kompilat die Dateiendung .dll hat. Diese .NET-Kompilate werden auch als Assemblys bezeichnet.

Es gibt eine Reihe von Projektvorlagen, die diese Bedingung erfüllen. Im Moment kommt für uns aber nur eine in Betracht, nämlich die Klassenbibliothek. Eine Klassenbibliothek wird zu einer DLL-Datei kompiliert und ist somit auch nicht eigenstartfähig. Versuchen Sie dennoch, das Projekt einer Klassenbibliothek aus der Entwicklungsumgebung heraus zu starten, erhalten Sie eine Fehlermeldung. Sie können jedoch weiterhin das Klassenbibliotheksprojekt über das Menü Erstellen kompilieren.

Normalerweise werden Sie schon von Anfang an die Überlegung anstellen, ob Sie Ihre zu entwickelnden Klassen in einer Klassenbibliothek bereitstellen wollen oder in einer anderen Projektvorlage. Da wir aber anfangs mit einer Konsolenanwendung angefangen haben, müssen wir unsere fertigen Klassen nun in einer Klassenbibliothek unterbringen. Hierbei gibt es mehrere Möglichkeiten:

  • Klicken Sie im Projektmappen-Explorer auf den Knoten Properties. Es öffnet sich daraufhin das Projekteigenschaftsfenster. Wählen Sie hier die Lasche Anwendung aus, und stellen Sie im Listenfeld Ausgabetyp den gewünschten Projekttyp ein, also Klassenbibliothek. Das Kompilat ist anschließend eine DLL. In diesem Fall können Sie die Klasse Program mit der Startmethode Main löschen.
  • Erstellen Sie ein neues Projekt vom Typ Klassenbibliothek. Anschließend wird eine Klasse mit dem Namen Class1 bereitgestellt. In der Regel wollen Sie Ihrer Klasse jedoch einen anderen Bezeichner geben. Markieren Sie dazu im Projektmappen-Explorer die Sourcecode-Datei Class1.cs, öffnen Sie danach deren Kontextmenü, und wählen Sie hier Umbenennen. Nachdem Sie der Quellcode-Datei einen neuen Namen gegeben haben (der dem der Klasse entsprechen sollte), werden Sie gefragt, ob auch der Klassenbezeichner entsprechend geändert werden soll. Sie brauchen das nur zu bestätigen.

Galileo Computing - Zum Seitenanfang

15.1.1 Mehrere Projekte in einer Projektmappe verwalten Zur nächsten ÜberschriftZur vorigen Überschrift

Bisher haben wir in der Entwicklungsumgebung immer nur mit einem Projekt gearbeitet. Visual Studio ermöglicht es aber auch, mehrere Projekte gleichzeitig parallel zu bearbeiten. Verwaltet werden die einzelnen Projekte in einer Projektmappe, die die Aufgabe eines Containers hat. Visual Studio generiert bereits beim Erstellen eines neuen Projekts eine Projektmappe, die anschließend um beliebig viele – auch unterschiedliche – Projekttypen erweitert werden kann. Damit erübrigt sich das mehrfache Öffnen von Visual Studio, wenn mehrere Projekte gleichzeitig bearbeitet werden sollen. Die von einer Projektmappe verwalteten Projekte können in einem logischen Zusammenhang stehen, müssen es aber nicht zwangsläufig.

Auch Projektmappen haben einen spezifischen Bezeichner. Dieser kann vergeben werden, sobald Sie die Entwicklungsumgebung starten und ein neues Projekt erstellen. Sollten Sie im Projektmappen-Explorer keinen Knoten für die Projektmappe sehen, öffnen Sie das Menü Extras und wählen Optionen. Im Dialog, der daraufhin geöffnet wird, wählen Sie in der linken Liste den Knoten Projekte und Projektmappen aus. Im rechten Bereich des Dialogs wird Ihnen daraufhin eine Option angeboten, die Projektmappe immer anzuzeigen.

Der Standardbezeichner einer Projektmappe ist der des ersten Projekts, sollte allerdings insbesondere dann einen spezifischen Namen bekommen, wenn Sie wissen, dass Sie im Laufe der Entwicklungstätigkeit mindestens noch ein weiteres Projekt hinzufügen wollen.

Um die Entwicklungsumgebung um ein weiteres Projekt zu ergänzen, müssen Sie im Projektmappen-Explorer den Knoten der Projektmappe markieren, dessen Kontextmenü öffnen und Hinzufügen Neues Projekt... auswählen. Daraufhin öffnet sich ein Dialog, der alle Projekttypen zur Auswahl stellt.

Werden von einer Projektmappe mehrere Projekte verwaltet, kann nur eines davon ausgeführt werden, wenn man auf die Schaltfläche Starten in der Symbolleiste von Visual Studio klickt. Es ist immer das Projekt, dessen Projektbezeichner fett geschrieben ist. Um ein anderes Projekt zum Startprojekt zu erklären, gibt es mehrere Möglichkeiten. Eine davon ist, das Kontextmenü des Projekts zu öffnen, mit dem gestartet werden soll. Wählen Sie im Kontextmenü dieses Projekts Als Startprojekt festlegen aus.

Physikalisch werden die Projekte innerhalb einer Projektmappe als Unterordner des übergeordneten Ordners der Projektmappe gespeichert. Im Verzeichnis der Projektmappe ist eine Datei mit der Dateierweiterung .sln zu finden, in der die einzelnen untergeordneten Projekte angegeben sind.


Anmerkung

Das von uns bearbeitete Projekt GeometricObjects befindet sich bereits in einer Projektmappe mit dem Namen GeometricObjectsSolution. Sie sollten diese um eine Konsolenanwendung mit dem Bezeichner TestApplication ergänzen, die wir im weiteren Verlauf dieses Kapitels noch benötigen.



Galileo Computing - Zum Seitenanfang

15.1.2 Die Zugriffsmodifizierer »public« und »internal« Zur nächsten ÜberschriftZur vorigen Überschrift

Klassen können sowohl als public als auch als internal definiert sein. public bedeutet, dass die so gekennzeichnete Komponente überall sichtbar ist. In einer Konsolenanwendung eine Klasse nicht mit public zu kennzeichnen, hat keine besonderen Auswirkungen, denn alle Typdefinitionen innerhalb eines Projekts, das zu einer EXE-Datei kompiliert wird, können nicht veröffentlicht werden.

Dem Zugriffsmodifizierer public kommt eine besondere Bedeutung innerhalb einer Klassenbibliothek zu, denn damit teilen wir dem Compiler mit, dass auch Anwendungen außerhalb der Klassenbibliothek auf diese Klasse zugreifen dürfen. Der Verzicht auf die Angabe von public bedeutet, dass die Typdefinition außerhalb der Klassenbibliothek nicht sichtbar ist. Dies ist gleichbedeutend mit dem ausdrücklichen Setzen des Zugriffsmodifizierers internal.


Hinweis

Obwohl hier nur Klassen erwähnt worden sind, gilt das Gesagte natürlich auch gleichermaßen für Interfaces, Delegates, Strukturen und Enumerationen.



Galileo Computing - Zum Seitenanfang

15.1.3 Friend-Assemblys Zur nächsten ÜberschriftZur vorigen Überschrift

Um den Zugriff auf die Mitglieder einer Assembly von einer zweiten Assembly aus sicherzustellen, muss neben der Klasse auch das Mitglied public deklariert sein. Der Zugriffsmodifizierer internal einer Klasse macht die Klasse innerhalb einer Assembly zugreifbar, sie ist aber außerhalb der Assemblierung nicht zu sehen. Dasselbe gilt auch für die Member einer Klasse.

Um eine noch bessere Steuerung des Zugriffs zu ermöglichen, gibt es Assemblierungen, die ihre internal-Klassen und Mitglieder nur ganz bestimmten Anwendungen zur Verfügung stellen. Sehen Sie sich dazu das folgende Beispiel der Klasse Demo an:


namespace ClassLibrary {
  internal class Demo {
    internal void TestMethod() {
      Console.WriteLine("In der Friend-Assembly");
    }
  }
}

Demo ist als internal definiert. Andere Klassen, die sich innerhalb derselben Assemblierung befinden, sehen die Definition von Demo und können darauf zugreifen. Nutzt jedoch eine andere Anwendung diese Klassenbibliothek, erfährt sie nichts von der Existenz des Typs Demo.

Nehmen wir an, wir wollten nun den Typ Demo einer ganz bestimmten Anwendung zur Verfügung stellen, deren Name TestAppliction sei. Tatsächlich ist so etwas möglich. Dazu muss die Bibliothek, in der Demo definiert ist, mit dem Attribut InternalsVisibleTo verknüpft werden. Dem Attribut wird ein Zeichenfolgeparameter mit dem Namen der Anwendung übergeben, für die alle nicht öffentlichen Typen sichtbar gemacht werden sollen.


[assembly:InternalsVisibleTo("TestApplication")]
namespace ClassLibrary {
  class Class1 {... }
}

Das Attribut gehört zum Namespace System.Runtime.CompilerServices. Gesetzt wird der Eintrag in der Datei AssemblyInfo.cs, die sich unterhalb des Properties-Knotens im Projektmappen-Explorer befindet.


Galileo Computing - Zum Seitenanfang

15.1.4 Einbinden einer Klassenbibliothek topZur vorigen Überschrift

Kommen wir zurück zur Projektmappe GeometricObjectsSolution. Uns liegen nun mit TestApplication und GeometricObjects zwei Projekte in der Projektmappe vor. TestApplication dient dazu, das nun als Klassenbibliothek vorliegende Projekt GeometricObjects zu testen. Allerdings weiß die Konsolenanwendung noch nicht, dass die Klassenbibliothek existiert. Das müssen wir zuerst sicherstellen. Dazu dient der Knoten Verweise im Projektmappen-Explorer. Im Kontextmenü dieses Knotens wählen Sie Verweis hinzufügen... Daraufhin öffnet sich der in Abbildung 15.1 gezeigte Dialog mit den Registerkarten .NET, COM, Projekte, Durchsuchen und Aktuell.


Tabelle 15.1 Registerkarten des »Verweise hinzufügen«-Dialogs

Lasche Bedeutung

.NET

Wählen Sie hier die Klassenbibliothek aus, die Sie in Ihrer Anwendung nutzen wollen. Bei den hier aufgeführten Bibliotheken handelt es sich um sogenannte globale Assemblys, die im Global Assembly Cache eingetragen sind. Mehr darüber werden Sie weiter unten erfahren.

COM

.NET gestattet nicht nur, auf .NET basierende Bibliotheken bekannt zu geben. COM ist hinsichtlich der Interoperabilität die Vorgängertechnologie von .NET und stammt auch aus dem Hause Microsoft. Viele Anwendungen, die in der Vergangenheit entwickelt worden sind, basieren auf COM: Diese Investitionen sind nicht »verloren« und können weiterhin auch von .NET-Anwendungen genutzt werden. Die COM-Registerkarte des Dialogs führt alle COM-Komponenten auf, die für Verweise verfügbar sind.

Projekte

In der Liste dieser Registerkarte werden alle Projekte aufgeführt, die in der Visual Studio-Umgebung verfügbar sind.

Durchsuchen

Hier ist es Ihnen möglich, zusätzliche Komponenten zu suchen, die nicht in den anderen Registerkarten aufgeführt sind, und diese der Liste hinzuzufügen. Insbesondere können Sie hier auch auf private Assemblys verweisen.

Aktuell

Zeigt alle vor Kurzem hinzugefügten Verweise an.


Abbildung 15.1 Der Dialog »Verweise hinzufügen«

Bezogen auf die uns vorliegende Projektmappe GeometricsObjectSolution ist es am einfachsten, die Registerkarte Projekte auszuwählen, da wir hier sofort die Klassenbibliothek GeometricObjects angeboten bekommen.

Jetzt haben wir in der Anwendung Zugriff auf die öffentlichen Elemente in GeometricObjects und können beispielsweise die Klasse Circle instanziieren. Dabei müssen wir aber auch den Namespace, in dem Circle definiert ist, berücksichtigen. Entweder geben wir den vollqualifizierenden Bezeichner an, beispielsweise


GeometricObjects.Circle kreis = new GeometricObjects.Circle();

oder – was eine deutlich bessere Lösung ist – wir geben den Namespace mit using vorher bekannt und können direkt die Klasse ansprechen:


using GeometricObjects;
...
Circle kreis = new Circle();



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