Wichtige Add-Ins für Visual Studio .NET und 2005

Veröffentlicht: 19. Jan 2006

Von James Avery

Im letzten Jahr habe ich einen Artikel mit dem Titel ".NET Tools: Ten Must-Have Tools Every Developer Should Download Now" (in englischer Sprache) verfasst, in dem zehn kostenlos verfügbare Tools für Microsoft .NET Framework vorgestellt wurden. Dieses Jahr habe ich erneut eine Liste von wichtigen Tools erstellt, ich konzentriere mich dieses Jahr jedoch auf Visual Studio-Add-Ins im Gegensatz zu eigenständigen Tools. Visual Studio bietet ein umfassendes Erweiterungsmodell, dessen Vorteile die Entwickler bei Microsoft und in der Community genutzt haben, um eine Vielzahl von qualitativ hochwertigen Add-Ins zu erstellen. Bei einigen dieser Add-Ins fragt man sich, wie man jemals ohne sie auskommen konnte, andere helfen einfach dabei, einige kleine, sich wiederholende Aufgaben zu automatisieren. (Dieser Artikel enthält auch Links zu englischsprachigen Seiten.)

Auf dieser Seite

TestDriven.NET
GhostDoc
Smart Paster
CodeKeep
PInvoke.NET
VSWindowManager PowerToy
WSContractFirst
VSMouseBindings
CopySourceAsHTML
Cache Visualizer

TestDriven.NET

Bei der testgesteuerten Entwicklung werden vor dem Schreiben des Codes Komponententests geschrieben, um anschließend den Code zu schreiben, damit diese erfolgreich verlaufen. Indem vor dem Code Tests geschrieben werden, kann das exakte Verhalten des Codes angegeben werden, und Sie erhalten, als Bonus, eine hundertprozentige Testabdeckung, die ein umfassendes Refactoring ermöglicht.

Mithilfe von NUnit können Sie Komponententests unter Verwendung einer einfachen Syntax schreiben und anschließend diese Tests einzeln oder zusammen für Ihre Anwendung ausführen. Wenn Sie Visual Studio Team System verwenden, verfügen Sie über integrierte Testfunktionen in der Visual Studio-IDE. Bevor Visual Studio Team System zur Verfügung stand, gab es das Add-In TestDriven.NET, das NUnit direkt in die Visual Studio-IDE integriert. Die Verwendung einer Version von Visual Studio 2005 ohne Team System oder von Visual Studio .NET 2003 ist meines Erachtens nach wie vor die beste Lösung.

TestDriven.NET fügt der Visual Studio-IDE die Komponententestfunktionen direkt hinzu. Anstatt einen Komponententest zu schreiben, wechseln Sie zum GUI-Tool NUnit, führen den Test aus, wechseln zum Codieren zurück zur IDE, usw., und führen so sämtliche Schritte direkt in der IDE durch.

Neue Testoptionen von TestDriven.NET
Abbildung 1: Neue Testoptionen von TestDriven.NET

Nach dem Installieren von TestDriven.NET finden Sie im Kontextmenü für die rechte Maustaste einige neue Menüelemente (siehe Abbildung 1). Sie können direkt mit der rechten Maustaste auf einen Komponententest klicken und diesen ausführen. Die Ergebnisse werden im Ausgabefenster angezeigt (siehe Abbildung 2).

Ausgabe eines Komponententests
Abbildung 2: Ausgabe eines Komponententests

Allein die Komponententests in der IDE sind eine unschätzbare Funktion. Die beste Funktion ist jedoch möglicherweise das rasche Starten im Debugger durch einen Klick mit der rechten Maustaste auf einen Test und die Auswahl von Test With | Debugger. Dadurch wird der Debugger gestartet und die Komponententests ausgeführt, wobei sämtliche in den Tests festgelegten Haltepunkte berücksichtigt werden.

Tatsächlich können in TestDriven.NET nicht nur Komponententests ausgeführt werden. Genauso einfach können Sie jede öffentliche Methode testen, die "Void" zurückgibt. Das bedeutet, dass Sie beim Testen einer alten Anwendung und dem damit verbundenen Überprüfen von Code einen schnellen Test schreiben und unmittelbar ausführen können.

TestDriven.NET ist ein wichtiges Add-In, wenn Sie mit Komponententests arbeiten oder testgesteuerte Entwicklung betreiben. TestDriven.NET wurde von Jamie Cansdale geschrieben und kann unter http://www.testdriven.net/ (in englischer Sprache) heruntergeladen werden.

GhostDoc

XML-Kommentare sind unschätzbar für die Anwendungsdokumentation, da man mit ihnen den Code beschreiben kann. Anschließend können Sie mit einem Tool wie nDoc auf diesen Kommentaren basierende Hilfedateien oder MSDN-ähnliche Webdokumentationen erstellen. Das einzige Problem bei der XML-Dokumentation ist der Zeitaufwand beim Schreiben, bei dem mitunter wieder und wieder recht ähnliche Anweisungen verfasst werden müssen. Das Ziel von GhostDoc ist es, die lästigen Teile des Schreibens von XML-Kommentaren zu automatisieren, indem der Name der Klasse oder Methode sowie sämtliche Parameter betrachtet werden. Anschließend wird basierend auf den empfohlenen Benennungskonventionen eine begründete Vermutung zum Erscheinungsbild der Dokumentation vorgenommen. Dies ersetzt zwar nicht das Schreiben einer gründlichen Dokumentation der Geschäftsregeln und das Bereitstellen von Beispielen, die lästigen Routineteile der Dokumentationserstellung werden jedoch automatisiert.

Betrachten Sie beispielsweise die folgende Methode:

private void SavePerson(Person person)
{

}

Nach der Installation von GhostDoc können Sie mit der rechten Maustaste auf die Methodendeklaration klicken und Document this (Dokumentieren) auswählen. Folgende Kommentare werden daraufhin Ihrem Dokument hinzugefügt:

/// <summary>
/// Saves the person.
/// </summary>
/// <param name="person">Person.</param>
private void SavePerson(Person person)
{

}

Wie Sie sehen, hat GhostDoc basierend auf der Benennung der Methode automatisch eine Zusammenfassung erstellt, bei der auch die Parameterkommentare ausgefüllt wurden. Das sollte Ihnen jedoch nicht genügen. Sie sollten zusätzliche Kommentare hinzufügen, die festlegen, wo die Person gespeichert werden soll, oder die ein Beispiel für das Erstellen und Speichern einer Person geben. Im Folgenden finden Sie meinen Kommentar, nachdem ich manuell einige zusätzliche Informationen hinzugefügt habe:

/// <summary>
/// Saves a person using the configured persistence provider.
/// </summary>
/// <param name="person">The Person to be saved</param>
private void SavePerson(Person person)
{

}

Das Hinzufügen dieser zusätzlichen Kommentare ist bedeutend einfacher, da der grundlegende, sich wiederholende Teil automatisch von GhostDoc erstellt wird. GhostDoc beinhaltet zudem Optionen, mit denen vorhandene Regeln geändert und zusätzliche Regeln erstellt werden können, die festlegen, welche Arten von Kommentaren erstellt werden sollen.

GhostDoc wurde von Roland Weigelt geschrieben und kann unter www.roland-weigelt.de/ghostdoc (in englischer Sprache) heruntergeladen werden.

Smart Paster

Zeichenfolgen spielen bei den meisten Anwendungen eine große Rolle, sei es als Kommentare für das Beschreiben des Systemverhaltens, als Meldungen, die an den Benutzer gesendet werden, oder als SQL-Anweisungen, die ausgeführt werden. Einer der lästigen Aspekte des Arbeitens mit Zeichenfolgen ist, dass diese anscheinend niemals korrekt in die IDE eingefügt werden. Beim Einfügen von Kommentaren sind die Zeichenfolgen möglicherweise zu lang oder nicht richtig ausgerichtet, so dass Sie viel Zeit damit verbringen müssen, Zeilenumbrüche, Kommentarzeichen und Tabstopps einzufügen. Beim Arbeiten mit Zeichenfolgen, die verkettet werden sollen, wartet sogar noch mehr Arbeit auf Sie, da in der Regel die Zeichenfolgenteile separiert, Verkettungssymbole eingefügt und ein Zeichenfolgengenerator verwendet werden muss.

Das Add-In Smart Paster kann diesen Arbeitsaufwand verringern, indem es im Kontextmenü einige Befehle zur Verfügung stellt, mit denen eine Zeichenfolge von der Zwischenablage in einem bestimmten Format in Visual Studio eingefügt werden kann. Nach der Installation von Smart Paster werden die neuen Einfügeoptionen im Kontextmenü angezeigt (siehe Abbildung 3).

Zeichenfolgeneinfügeoptionen von Smart Paster
Abbildung 3: Zeichenfolgeneinfügeoptionen von Smart Paster

Sie verwenden zum Beispiel folgende Zeichenfolge, die einen Teil der Geschäftslogik genauer beschreibt:

To update a person record, a user must be a member of the customer 
service group or the manager group. After the person has been updated, a 
letter needs to be generated to notify the customer of the information 
change.

Wenn Sie diese Zeichenfolge kopieren und mithilfe der Option Paste As | Comment (Einfügen als | Kommentar) in Visual Studio einfügen, erhalten Sie folgendes Ergebnis:

//To update a person record a user must be a member of the customer 
//service group or the manager group. After the person has been updated 
//a letter needs to be generated to notify the customer of the
//information change.

Die richtigen Kommentarzeichen und Zeilenumbrüche werden automatisch eingefügt (es kann konfiguriert werden, ab welcher Länge ein Zeilenumbruch eingefügt werden soll). Wenn dieser Text ohne Smart Paster eingefügt wird, geschieht dies als einzelne, lange Zeile, so dass sämtliche Zeilenumbrüche und Kommentarzeichen manuell eingegeben werden müssen. Nehmen Sie als weiteres Beispiel folgende Fehlermeldung an, in die zur Laufzeit Werte eingefügt werden müssen:

You do not have the correct permissions to perform <insert action>.
You must be a member of the <insert group> to perform this action.

Mithilfe des Befehls Paste As | StringBuilder (Einfügen als | StringBuilder) kann diese Zeichenfolge als StringBuilder-Objekt in Visual Studio eingefügt werden. Das Ergebnis sieht folgendermaßen aus:

StringBuilder stringBuilder = new StringBuilder(134);
stringBuilder.AppendFormat(
    @"You do not have the correct permissions to ");
stringBuilder.AppendFormat(
    @"perform <insert action>. You must be a member of ");
stringBuilder.AppendFormat(
    @"the <insert group> to perform this action.");
Hier muss lediglich der Code geändert werden, um die Variablenabschnitte der Zeichenfolge zu ersetzen: 
StringBuilder stringBuilder = new StringBuilder(134);
stringBuilder.AppendFormat(
    @"You do not have the correct permissions to ");
stringBuilder.AppendFormat(
    @"perform {0}. You must be a member of ", action);
stringBuilder.AppendFormat(
    @"the {0} to perform this action.", group);

Smart Paster ist ein zeitsparendes Add-In, das einen Großteil der Arbeit im Zusammenhang mit Zeichenfolgen in Visual Studio eliminiert. Smart Paster wurde von Alex Papadimoulis geschrieben und kann unter weblogs.asp.net/alex_papadimoulis/category/5341.aspx (in englischer Sprache) heruntergeladen werden.

CodeKeep

Im Laufe des Softwareentwicklungsprozesses werden in der Regel kleine Codeausschnitte wiederholt verwendet. Möglicherweise verwenden Sie mehrfach ein Beispiel zum Abrufen eines Enumerationswertes aus einer Zeichenfolge oder eines Startpunkts, um in Ihrer bevorzugten Sprache ein bestimmtes Muster zu implementieren.

Visual Studio bietet einige integrierte Funktionen für das Arbeiten mit Codeausschnitten, es werden jedoch einige Punkte vorausgesetzt. Zunächst wird davon ausgegangen, dass sämtliche Ausschnitte auf dem lokalen Computer gespeichert werden, so dass diese beim Wechseln von Computern oder dem Verschieben von Aufträgen mitgenommen werden müssen. Zum Zweiten können diese Ausschnitte nur von Ihnen angezeigt werden. Es gibt keine integrierten Mechanismen für die Freigabe von Ausschnitten für verschiedene Benutzer, Gruppen oder die allgemeine Öffentlichkeit.

Hier hilft CodeKeep. CodeKeep ist eine Webanwendung, die einen Ort zur Verfügung stellt, an dem Codeausschnitte in sämtlichen Sprachen erstellt und freigegeben werden können. Der wahre Nutzen von CodeKeep ist das Visual Studio-Add-In, mit dem rasch in der CodeKeep-Datenbank gesucht und eigene Ausschnitte übertragen werden können.

Nach der Installation von CodeKeep können vorhandene Codeausschnitte durch Auswahl von Tools | CodeKeep | Search und mithilfe des in Abbildung 4 abgebildeten Suchfensters gesucht werden.

Suchen von Codeausschnitten mit CodeKeep
Abbildung 4: Suchen von Codeausschnitten mit CodeKeep

In diesem Fenster können Sie Ihre eigenen Ausschnitte anzeigen oder sämtliche an CodeKeep übertragene Ausschnitte durchsuchen. Beim Suchen nach Ausschnitten werden sämtliche Ausschnitte angezeigt, die von Benutzern als öffentlich markiert wurden (Sie können Code auch als privat markieren, wenn Sie Ihre Versuche nicht allen anderen Benutzern zugänglich machen möchten). Wenn Sie den gewünschten Ausschnitt finden, können Sie die Details anzeigen und den Ausschnitt anschließend schnell in die Zwischenablage kopieren und in Ihren Code einfügen.

Außerdem können Sie Ihre eigenen Codeausschnitte schnell und einfach zu CodeKeep hinzufügen, indem Sie den zu speichernden Code auswählen, mit der rechten Maustaste klicken und anschließend Send to CodeKeep auswählen. Dadurch wird ein neues Fenster geöffnet, in dem Sie einige Metadaten zu Ihrem Ausschnitt angeben können, z. B. Kommentare, die Sprache, in der er geschrieben wurde, und ob er privat oder öffentlich sein soll.

Wann immer Sie Code schreiben, von dem Sie annehmen, dass Sie ihn zukünftig noch einmal verwenden können, nehmen Sie sich einen Moment Zeit, um ihn zu übertragen. Dadurch müssen Sie sich keine Gedanken um die Verwaltung oder das erneute Schreiben von Code machen. Da CodeKeep sämtliche Ausschnitte auf dem Server speichert, sind diese zentralisiert und müssen nicht von System zu System oder von Job zu Job verschoben werden.

CodeKeep wurde von Dave Donaldson von Arcware geschrieben und kann unter http://www.codekeep.net/ (in englischer Sprache) heruntergeladen werden.

PInvoke.NET

P/Invoke ist der Prozess für den Zugriff auf systemeigene Win32-API-Aufrufe in .NET Framework. Eine der Schwierigkeiten bei der Verwendung von P/Invoke ist das Ermitteln der zu verwendenden Methodensignatur. Dabei ist häufig ein großer Experimentieraufwand notwendig. Das Senden von falschen Datentypen oder Werten an eine nicht verwaltete API führt häufig zu Speicherverlusten oder anderen unerwarteten Ergebnissen.

PInvoke.NET ist ein Wiki, das verwendet werden kann, um die richtigen P/Invoke-Signaturen zu dokumentieren, die beim Aufrufen von nicht verwalteten Win32-APIs verwendet werden sollen. Ein Wiki ist eine auf Zusammenarbeit ausgerichtete Website, die jeder bearbeiten kann. Daher finden sich dort Tausende von Signaturen, Beispielen und Hinweisen zur Verwendung von P/Invoke. Da das Wiki von jedermann bearbeitet werden kann, können Sie sowohl Informationen beitragen als auch die bereits vorhandenen nutzen.

Obwohl alleine das Wiki und die dort gespeicherten Informationen äußerst hilfreich sind, stellt doch das PInvoke.NET Visual Studio-Add-In den größten Gewinn dar. Nachdem Sie das Add-In heruntergeladen und installiert haben, können Sie sowohl nach Signaturen suchen als auch neue Informationen von Visual Studio aus übertragen. Klicken Sie einfach mit der rechten Maustaste auf Ihre Codedatei. Es werden zwei neue Kontextmenüelemente angezeigt: Insert PInvoke Signatures (PInvoke-Signaturen einfügen) und Contribute PInvoke Signatures and Types (PInvoke-Signaturen und -Typen beitragen).

Verwendung von PInvoke.NET
Abbildung 5: Verwendung von PInvoke.NET

Durch Auswahl von Insert PInvoke Signatures (PInvoke-Signaturen einfügen) wird das in Abbildung 5 abgebildete Dialogfeld angezeigt. Mithilfe dieses einfachen Dialogfelds können Sie nach der aufzurufenden Funktion suchen. Optional können Sie das Modul einschließen, zu dem diese Funktion gehört. Ein wichtiger Teil aller wesentlichen Anwendungen ist die Fähigkeit, dem Computer Signaltöne zu entlocken. Daher habe ich nach der Signaltonfunktion gesucht, um zu sehen, was angezeigt wird. Die Ergebnisse finden Sie in Abbildung 6.

Suchen der Signaltonfunktion in PInvoke.NET
Abbildung 6: Suchen der Signaltonfunktion in PInvoke.NET

Die Ergebnisse zeigen eine Zusammenfassung der Funktionsweise der Methode (in diesem Fall "Generates simple tones on the speaker" ("Erzeugt einfache Töne im Lautsprecher"). Außerdem werden Codesignaturen sowohl für C# als auch für Visual Basic .NET angezeigt. Das Wiki schlägt alternative verwaltete APIs vor, und Sie erfahren, dass in .NET Framework 2.0 die neue Methode System.Console.Beep vorhanden ist.

Unten im Dialogfeld finden Sie außerdem eine Verknüpfung, mit der Sie zur entsprechenden Wiki-Seite für die Signaltonmethode wechseln können. In diesem Fall beinhaltet die Seite sowohl eine Dokumentation der verschiedenen Parameter, die mit dieser Methode verwendet werden können, als auch Codebeispiele für die Verwendung.

Im Anschluss an die Auswahl der einzufügenden Signatur klicken Sie auf die Schaltfläche Insert (Einfügen), um es in Ihrem Codedokument zu platzieren. In diesem Beispiel wird folgender Code automatisch erstellt:

[DllImport("kernel32.dll", SetLastError=true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool Beep(
    uint dwFreq, uint dwDuration);

Anschließend müssen Sie lediglich einen Aufruf für diese Methode schreiben, und Ihr Computer wird in kürzester Zeit Signaltöne von sich geben.

Das PInvoke.NET-Wiki sowie das Visual Studio-Add-In verringern lästige Recherchezeiten, die mitunter bei der Arbeit mit der Win32-API von verwaltetem Code auftreten. Auf das Wiki kann über http://www.pinvoke.net/ (in englischer Sprache) zugegriffen werden, das Add-In kann über die Verknüpfung Helpful Tools (Nützliche Tools) in der linken unteren Ecke der Seite heruntergeladen werden.

VSWindowManager PowerToy

Die Visual Studio-IDE enthält eine Vielzahl verschiedener Fenster, die bei unterschiedlichen Aufgaben hilfreich sind. Möglicherweise haben Sie, ähnlich wie ich, verschiedene Fensterlayouts, die Sie an den unterschiedlichen Punkten Ihrer Entwicklungsarbeit verwenden. Beim Schreiben von HTML blende ich beispielsweise die Toolbox und das Aufgabenlistenfenster aus. Beim Entwerfen von Formularen soll beides wieder angezeigt werden. Beim Schreiben von Code möchte ich alle Fenster mit Ausnahme der Aufgabenliste ausblenden. Das je nach Aufgabe ständige Öffnen, Schließen und Verschieben von Fenstern kann sowohl frustrierend als auch zeitaufwändig sein.

Visual Studio beinhaltet ein Konzept für Fensterlayouts. So werden beispielsweise beim Starten des Debuggens die Fenster automatisch auf das Layout beim vorherigen Debuggen zurückgesetzt. Dies liegt daran, dass Visual Studio ein gewöhnliches und ein Fensterlayout für das Debuggen beinhaltet. Wäre es nicht schön, zusätzliche Layouts zu haben, die Sie beim Codieren oder Entwerfen verwenden könnten? Genau dies ermöglicht VSWindowManager PowerToy.

Nach der Installation von VSWindowManager PowerToy werden im Menü Fenster einige neue Optionen angezeigt (siehe Abbildung 7).

VSWindowManager-Layoutbefehle
Abbildung 7: VSWindowManager-Layoutbefehle

Das Menü Save Window Layout As stellt Befehle zur Verfügung, mit denen Sie das aktuelle Fensterlayout speichern können. Um dieses leistungsfähige Tool verwenden zu können, richten Sie die Fenster wie für Entwürfe gewünscht ein, und navigieren Sie anschließend zum Befehl Windows | Save Window Layout As | My Design Layout (Fenster | Fensterlayout speichern unter | Eigenes Entwurfslayout). Hiermit wird das aktuelle Layout gespeichert. Führen Sie die gleichen Schritte für Ihr bevorzugtes Codierlayout (Auswahl von My Coding Layout (Mein Codierlayout)) und anschließend für bis zu drei verschiedene benutzerdefinierte Layouts durch.

VSWindowManager wechselt automatisch zwischen den Entwurfs- und Codierlayouts, je nachdem ob gerade eine Entwurfs- oder Codedatei angezeigt wird. Außerdem können Sie die Befehle im Menü Apply Window Layout (Fensterlayout anwenden) verwenden, um aus den aktuell gespeicherten Layouts zu wählen. Durch Auswahl eines der gespeicherten Layouts werden die Fenster mithilfe von VSWindowManager automatisch ausgeblendet, angezeigt und neu angeordnet, sodass sie genau dem vorherigen Layout entsprechen.

VSWindowManager PowerToy ist äußerst einfach, kann Ihnen jedoch einigen Zeitaufwand und Ärger sparen. VSWindowManager kann unter workspaces.gotdotnet.com/vswindowmanager (in englischer Sprache) heruntergeladen werden.

WSContractFirst

Visual Studio vereinfacht das Erstellen von Webdiensten deutlich. Sie erstellen einfach eine ASMX-Datei, fügen Code hinzu, und schon sind Sie fertig. ASP.NET kann anschließend eine WSDL-(Web Services Description Language-)Datei erstellen, um das Verhalten und die Meldungsmuster für den Webdienst zu beschreiben.

Beim Erstellen dieser Datei in ASP.NET treten verschiedene Probleme auf. Das Hauptproblem besteht darin, dass Sie den für den Webdienst zu erstellenden Vertrag nicht mehr steuern können. Hier hilft die Contract-First-Entwicklung. Bei der Contract-First-Entwicklung, auch vertragsgesteuerte Entwicklung genannt, wird der Vertrag (die WSDL-Datei) für den Webdienst vor dem Schreiben des eigentlichen Webdienstes geschrieben. Durch das Schreiben einer eigenen WSDL-Datei haben Sie die vollständige Kontrolle darüber, wie Ihr Webdienst aussieht und verwendet wird, einschließlich der offen gelegten Schnittstelle und Datenstrukturen.

Das Schreiben eines WSDL-Dokuments ist nicht sehr vergnüglich. Es erinnert an das Schreiben eines juristischen Vertrags, wobei jedoch sehr viel XML verwendet werden muss. Hier kommt das WSContractFirst-Add-In ins Spiel. WSContractFirst vereinfacht das Schreiben der WSDL-Datei und generiert basierend auf der WSDL-Datei Code für den Client und den Server. Sie erhalten das Beste aus beiden Bereichen: die Kontrolle über Ihren Vertrag und die rasche Entwicklung, die Sie von der Dienstentwicklung im Stil von Visual Studio gewohnt sind.

Der erste Schritt zur Verwendung von WSContractFirst ist das Erstellen der XML-Schemadateien. Diese Dateien definieren die Meldungen, die für Ihre Webdienste verwendet werden. Visual Studio bietet eine benutzerfreundliche grafische Benutzeroberfläche für das Definieren Ihrer Schemas. Dies ist besonders hilfreich, da es sich hierbei um einen der Schlüsselschritte der Webdienstentwicklung handelt. Wenn Sie Ihre Schemas definiert haben, müssen Sie lediglich mit der rechten Maustaste auf eines der Schemas klicken und Create WSDL Interface Description (WSDL-Schnittstellenbeschreibung erstellen) auswählen. Dadurch wird der Assistent für das Erstellen von WSDL gestartet. Den ersten Schritt dieses Assistenten finden Sie in Abbildung 8.

Erstellen einer WSDL-Datei mit WSContractFirst
Abbildung 8: Erstellen einer WSDL-Datei mit WSContractFirst

In Schritt 1 werden die grundlegenden Informationen zu Ihrem Dienst erfasst, darunter der Name, der Namensraum und die Dokumentation. In Schritt 2 können Sie die in den Dienst einzuschließenden XSD-Dateien angeben. Das für das Starten des Assistenten ausgewählte Schema ist bereits in der Standardeinstellung eingeschlossen. In Schritt 3 können die Vorgänge des Diensts festgelegt werden. Der Vorgang kann benannt werden, und es kann festgelegt werden, ob es sich um einen Vorgang in einer Richtung oder mit Anforderung und Antwort handelt. In Schritt 4 können Sie die Details zu den Vorgängen und Meldungen eingeben. In Schritt 5 kann festgelegt werden, ob ein Element <service> erstellt werden soll und ob nach dem Beenden des Assistenten das Dialogfeld für die Codeerstellung geöffnet werden soll. In Schritt 6 können alternative XSD-Pfade angegeben werden. Nach Abschluss des Assistenten wird die neue WSDL-Datei dem Projekt hinzugefügt.

Nachdem Sie nun über eine WSDL-Datei verfügen, kann WSContractFirst noch einige weitere Dinge für Sie erledigen. Um die Codeerstellung in WSContractFirst zu starten, müssen Sie lediglich mit der rechten Maustaste auf die WSDL-Datei klicken und Generate Web Service Code (Webdienstcode erstellen) auswählen. Dadurch wird das Dialogfeld für die Codeerstellung geöffnet (siehe Abbildung 9).

Codeerstellungsoptionen in WSContractFirst
Abbildung 9: Codeerstellungsoptionen in WSContractFirst

Sie haben die Möglichkeit, einen Proxy für den Client oder einen Stub für den Dienst zu erstellen. Außerdem können einige andere Optionen für den Code und die in diesem enthaltenen Funktionen konfiguriert werden. Mithilfe dieser Codeerstellungsfunktionen kann die Entwicklungsarbeit deutlich beschleunigt werden.

Beim Entwickeln von Webdiensten mit Visual Studio sollten Sie sich unbedingt mit WSContractFirst und der Contract-First-Entwicklung auseinandersetzen. WSContractFirst wurde von Christian Weyer von Thinktecture geschrieben und kann unter www.thinktecture.com/Resources/Software/WSContractFirst/default.html (in englischer Sprache) heruntergeladen werden.

VSMouseBindings

Ihre Maus verfügt möglicherweise über fünf Tasten. Warum verwenden Sie also nur drei davon? VSMouseBindings bietet eine benutzerfreundliche Oberfläche, mit der Sie jeder Ihrer Maustasten einen Visual Studio-Befehl zuordnen können.

VSMouseBindings nutzt dabei umfassend das Befehlsmuster. So können Sie den Maustasten die verschiedensten Befehle zuordnen, z. B. für das Öffnen einer neuen Datei, das Kopieren eines ausgewählten Texts in die Zwischenablage oder jeden beliebigen anderen in Visual Studio verfügbaren Befehl. Nach dem Installieren von VSMouseBindings finden Sie im Dialogfeld Optionen den neuen Abschnitt VsMouseBindings. Die Oberfläche finden Sie in Abbildung 10.

VSMouseBindings-Optionen für Visual Studio
Abbildung 10: VSMouseBindings-Optionen für Visual Studio

Wie in der Abbildung gezeigt, können Sie einen Befehl für jede Haupttaste auswählen. Möglicherweise sollten Sie die rechte und linke Maustaste bei ihrer gewöhnlichen, äußerst sinnvollen Funktion belassen. Die Vor- und Zurücktasten bieten sich jedoch geradezu für eine Neuzuordnung an. Wenn Sie eine Vor- und Zurückfunktion wie bei einem Browser wünschen, können Sie den Tasten die Visual Studio-Befehle Navigate.Backward und Navigate.Forward (Vorwärts und rückwärts navigieren) zuordnen.

Mit der Auswahl unter Use this mouse shortcut in (Diese Mausverknüpfung verwenden in) können Sie den Umfang Ihrer Einstellungen festlegen. So können Sie unterschiedliche Einstellungen konfigurieren, je nachdem ob Sie im HTML-Designer oder im Quellcode-Editor arbeiten.

VSMouseBindings kann von www.gotdotnet.com/team/ide/#original (in englischer Sprache) heruntergeladen werden.

CopySourceAsHTML

Code ist weitaus einfacher lesbar, wenn bestimmte Codeteile durch verschiedene Textfarben vom Rest unterschieden werden. Das Lesen von Code ist in Visual Studio in der Regel bedeutend einfacher als in einem Editor wie z. B. Notepad.

Möglicherweise verfügen Sie längst über einen eigenen Blog, oder Sie verbringen einige Zeit mit dem Lesen anderer Blogs. In der Regel verwandelt sich ein toller Codeausschnitt beim Veröffentlichen in Ihrem Blog in gewöhnlichen, schwer lesbaren Text. Hier kommt das CopySourceAsHTML-Add-In ins Spiel. Dieses Add-In ermöglicht das Kopieren von Code als HTML-Text, so dass Sie diesen einfach in Ihrem Blog oder auf Ihrer Website veröffentlichen und dabei die Schriftfarben von Visual Studio beibehalten können.

Nach dem Installieren des CopySourceAsHTML-Add-Ins wählen Sie einfach den zu kopierenden Code und anschließend im Kontextmenü den Befehl Copy Source as HTML (Quelle als HTML kopieren) aus. Nachdem Sie diese Option ausgewählt haben, wird das Dialogfeld in Abbildung 11 angezeigt.

Optionen für CopySourceAsHTML
Abbildung 11: Optionen für CopySourceAsHTML

Hier können Sie auswählen, welche HTML-Ansicht erstellt werden soll. Dies kann Zeilennummern, bestimmte Tabulatorgrößen und viele andere Einstellungen einschließen. Klicken Sie auf OK, um den HTML-Text in der Zwischenablage zu speichern. Angenommen, Sie starten in Visual Studio mit folgendem Codeausschnitt:

private long Add(int d, int d2)
{
    return (long) d + d2;
}

Mit HTML formatierter Code
Abbildung 12: Mit HTML formatierter Code

Nachdem Sie Copy As HTML (Als HTML kopieren) ausgewählt und den HTML-Code mit Zeilennummern konfiguriert haben, wird der Code im Browser wie in Abbildung 12 angezeigt. Alle Möglichkeiten, das Freigeben und Verstehen von Code zu erleichtern, sind für alle hilfreich, da sie immer mehr Menschen ermuntern, die Arbeit auf sich zu nehmen, Wissen zu teilen und voneinander zu lernen.

CopySourceAsHTML wurde von Colin Coller geschrieben und kann unter www.jtleigh.com/CopySourceAsHtml (in englischer Sprache) heruntergeladen werden.

Cache Visualizer

Visual Studio 2005 beinhaltet ein neues Debugging-Feature, die Visualizer, die verwendet werden können, um eine für Menschen lesbare Ansicht von Daten während des Debugging-Vorgangs zu erstellen. Visual Studio 2005 enthält in der Standardeinstellung verschiedene Debugger-Visualizer, darunter insbesondere den DataSet-Visualizer, der eine tabellarische Oberfläche für die Anzeige und das Bearbeiten der Daten eines DataSets bietet. Diese Standard-Visualizer sind äußerst hilfreich. Das Beste an dieser neuen Schnittstelle ist jedoch ihre vollständige Erweiterbarkeit. Mit nur wenig Arbeitsaufwand können Sie eigene Visualizer schreiben, die das Debuggen erheblich vereinfachen.

Während viele Benutzer Visualizer für ihre eigenen, benutzerdefinierten komplexen Typen schreiben, haben einige Entwickler bereits die ersten Visualizer für Teile des Frameworks veröffentlicht. Im Folgenden möchte ich einen der bereits veröffentlichten, aus der Community stammenden Visualizer betrachten, der das Debuggen deutlich vereinfacht.

Der ASP.NET-Cache ist eine Sammlung von Objekten, die für die spätere Verwendung gespeichert werden. Jedes Objekt wurde mit einigen Einstellungen gewrappt, so z. B. wie lange es im Cache verbleibt sowie die Einstellungen zu bestimmten Cacheabhängigkeiten. Beim Debuggen kann nicht einfach ermittelt werden, was sich im Cache befindet, wie lange es dort verbleibt oder worauf es wartet. Brett Johnson hat diese Lücke erkannt und Cache Visualizer geschrieben, um den ASP.NET-Cache untersuchen zu können.

Nach dem Herunterladen und Installieren des Visualizers finden Sie in Ihren Debugfenstern neben dem Cache-Objekt ein neues Symbol (siehe Abbildung 13).

Auswahl von Cache Visualizer beim Debuggen
Abbildung 13: Auswahl von Cache Visualizer beim Debuggen

Wenn Sie auf das Vergrößerungsglas klicken, um Cache Visualizer zu verwenden, wird ein Dialogfeld angezeigt, das Informationen zu allen derzeit im ASP. NET-Cache gespeicherten Objekten enthält (siehe Abbildung 14).

Cache Visualizer zeigt die Objekte im ASP.NET-Cache an
Abbildung 14: Cache Visualizer zeigt die Objekte im ASP.NET-Cache an

Unter Public Cache Entries (Öffentliche Cacheeinträge) können Sie die von mir hinzugefügten Einträge sehen. Die Einträge unter Private Cache Entries (Private Cacheeinträge) werden von ASP.NET hinzugefügt. Beachten Sie, dass für den Cacheeintrag sowohl die Ablaufinformationen als auch die Dateiabhängigkeiten angezeigt werden.

Der Cache Visualizer eignet sich hervorragend für die Arbeit mit ASP.NET. Außerdem steht er für einige der hervorragenden in der Community entwickelten Visualizer, die wir demnächst sehen werden. Den Cache Visualizer finden Sie in Bretts Blog unter blog.bretts.net (in englischer Sprache).