Email to Torsten Weber
Feed Icon
.NET User Group Leipzig

Johanna Merhofs Kolumne "Heartcore" bei WELT online. Nein, es geht nicht um das, was die Überschrift erwarten lässt. Es geht nicht wie im Film und Fernsehen instrumentalisiert um Liebeserklärungen vom Schlag "Im Baseball-Station". Denn, Hand auf's Herz, würde sie überhaupt diesen Blog lesen und so von einer Liebeserklärung auch erfahren? Dafür reicht eine kurze Bestandsaufnahme: In diesem Blog geht es um .NET Technologien & Community, es geht um Erfahrungen und Lösungen aus dem IT-Alltag sowie um Mobile Computing. Wer Zeit zum Lesen mitbringt, kennt nicht nur alle (und ganz absichtlich eingebauten) Rechtschreibfehler, sondern auch "die anderen" Kategorien dieses Blogs wie beispielweise Rezepte. Und erstaunlicherweise wird der Blogeintrag Eier testen auch mit am häufigsten gelesen, na zumindest mit am häufigsten aufgerufen – ob das wirklich alles gelesen oder sogar verstanden wird, lässt sich nur mit etwas Aufwand bestimmen.

Dabei sind bei dem obigen Blogeintrag schon Suchanfragen wie "Geile Weber" heraus gerechnet, die wegen einiger Konstellationen wie meines Nachnamens, dem Ranking und so weiter, im selben Eintrag landen. Angenommen, ceteris paribus, Johanna kennt das, wie würden Informatiker sagen, Pattern?, wie schlechte von guten Eiern unterschieden werden. Angenommen sie hat zusätzlich keinen "Nerv" mit Vista & Co. Dann würde sie nie von einer Liebeserklärung hier erfahren. Ceteris paribus ist übrigens lateinisch und wird von Akademikern gerne für (Gedanken-)Experimente verwendet, um mit Rahmenbedingungen und Modellen die Welt zu vereinfachen. Meistens wiederum mit einem Ergebnis, dass das Modell so eben nicht in der Realität funktionieren kann, aber das ist eine ganz andere Geschichte. Bleibt noch zu klären, was Johanna tut. Wie gut, dass es Suchmaschinen gibt: Sie ist freie Journalistin und schreibt eine Kolumne bei WELT online über Herzschmerz & Singletum und "Stethoskop" war eines der ersten Worte von ihr. Das ist alles weit weg von der IT und sie landet auch daher wiederum nie in diesem Blog.

Gut, w. z. b. w., was zu beweisen war; es ist so unwahrscheinlich, dass sie eine Liebeserklärung hier lesen würde, dass es schon deswegen keine sein kann. (Ab dieser Stelle können auch die letzen Leser – Wie, Sie sind etwa noch da? –, desinteressiert aufhören zu lesen; fast hätte ich geschrieben dürfen.)

(M)ein Herz für Johanna Merhof William Shakespeare neu interpretiert: Vergebens wär so jed Liebesmüh. Ganz zu schweigen vom Gedanken eines Liebesbeweises, ohne die Adressatin dazu zu kennen. Das machte man doch in vorherigen Jahrhunderten, wo die Heirat beispielsweise auch für Existenzsicherung diente? Oder tut man es heutzutage nicht nur noch in Ländern, weit weg von Idealen westlicher Hemisphäre? Es ist daher ein Liebesbeweis an ihre Kolumne, Halt!, das wäre falsch, es ist ein Liebesbeweis, an ihre Art zu schreiben. Denn eine Kolumne ist letztendlich ja nur eine Art der schreibenden Zunft, geduldigem Papier (bzw. Webspace) das Weiß zu rauben. Besitzt der Schreiberling auch noch Schreibkunst, ist doch das Medium egal: Jegliches geschriebene, Thema ist egal, klingt verdammt smart.

Harter Schnitt. Die Liebeserklärung entwickelt sich nun in eine Hommage. Warum steht das denn nicht in auch so in der Überschrift drin? Dann hätten Sie diesen Artikel im Feedreader Ihres Vertrauens nämlich gleich als gelesen markieren können, stimmt's? Ganz einfach: Weil Liebeserklärung besser klingt als olles, zumindest hier, französisch und weil es viel mehr meint, als Hommage je ausdrücken könnte.

Das was ich bei José Saramango liebe, ewig lange Sätze, mit ewig langen Nebensätzen, so dass, das ist doch leicht nachvollziehbar und verständlich, im Übrigens hat ein Alt-Bundeskanzler mit einer ähnlichen Technik gearbeitet, aber das nur zum Vergleich, man durchaus vielleicht Mühe hat, bei den vielen Sätzen mit tausenden Kommas und viel anderer Interpunktion-Manifestation, den Faden nicht zu verlieren, macht sie ganz anders. Sehr geschickt setzt sie auch ":", "-", "–", ";" und so weiter ein; etwas, was ich seit Abiturzeiten und der Frage an meine Deutschlehrerin, "Wann verwendete ich das Semikolon?" nur mit "Ahh Torsten!, du immer mit deinen Fragen!" beantwortet bekam. Viel zu wenig wird Interpunktion von heutigen Autoren, das ist jetzt Gesellschaftskritik, und Lektoren verwendet¹ . Das reiht sich doch gleich nach passiver Schreibweise, sowie Dativ statt Genetiv und Deppen-Apostroph ein².

Gut, die Nummer mit der Pferdekutsche und der Dorfkirche war vielleicht etwas übertrieben, doch spätestens, als wir uns durch den Weinkeller tranken und mein perfekter Freund am Klavier Glenn-Gould-Interpretationen zum Besten gab, flüsterte auch meine überkritische Mutter: „Kind, kneif mich mal.“ Ich seufze, nicht nur aus nostalgischen Gründen. Denn der erste Feiertag beginnt selbstverständlich genauso wie jede einzelne Heilige Nacht des vergangenen Jahres endete: Mit einem himmlischen und lebensverändernden Orgasmus.

Massagegerät für OmaOb sie von ihrer Schwester tatsächlich auch einen Vibrator zu Weihnachten, schließlich ist der Ex-Freund Sebastian schon vier Jahre her, bekommen hat oder nicht, interessiert nicht wirklich. Im Prinzip fehlt im Text nur noch, dass ihn die Oma gleich ausprobieren will, eventuell als ein neues Küchenutensil? Genau das kommt auch und könnte mit als ein Kritikpunkt an ihrer Kolumne dienen. Sie schreibt eine derart phantasievoll ausgeschmückte Welt nieder, dass sich der Leser fragt, ob Johanna nicht lange fackelt und dazu einfach klischeehaftes Großstadtleben, Wunschdenken und ihre Phantasie verbindet. Doch spielt es überhaupt eine Rolle? Solange sie weiter so fließend und so überaus frech und wiederum liebevoll über "Abgründe" des Liebeslebens schreibt, wird sie polarisieren, werden sich Leser horrent über ihre Kolumne aufregen, fast bis zum Infarkt reden und sich andere wie bei einem Kinobesuch von "Berlin Pie" fühlen. Es wird dabei Kritik à la Weihnachtsbaumhasserin aber auch viel Lob geben. Genau das ist auch ein Auftrag einer Kolumne. Sie hat die Erlaubnis, ja sie strahlt geradezu etwas aus, dass zur Polarisierung auffordert; sie ist ein Instramentarium dazu – denn eigene Ansichten müssen nicht immer richtig sein. In Kommentaren der Leser ihrer Artikel findet sich das in der Tat auch genauso wieder. Single hin, Klischees her, abgeschrieben oder schon tausend Mal in ähnlicher Weise publiziert; vielleicht auch einfach nur köstlich, weil es durchaus genauso in der Realität passiert. Und viel Öfters als man denkt sowieso. Man muss selbst entscheiden, was man davon hält!

Ich kann ihren RSS-Feed für ein Abonnement empfehlen. Bei WELT online wird mitgedacht, bei SPIEGEL online wie z. B. bei Zwiebelfisch mangels RSS-Feeds für Rubriken nicht. Hier muss man sozusagen den ganzen SPIEGEL kaufen; es gibt nur zwei RSS-Feeds. Das ist doch von vorgestern.

Was passiert, wenn – mal mit ihren Worten: "dauerhaftes Ende der Herzscheiße" – sie sich glücklich neu verliebt? Der Ex Sebastian ist doch längst, Ex und hopp, vergessen. Ist das dann das Ende der Kolumne? Per Kommentarfunktion haben sich doch gleich, dem Internet und Männerüberschuss-Theorie sei Dank, Sebastian-Ersatz-Figuren und Artikel-Virtueller-Freund-Erfüller gemeldet. Warten wir's einfach immer bis zum nächsten Dienstag ab, was es Neues aus Berlin gibt.

Bleibt noch zu sagen, dass ihr Bild nicht beabsichtigt gut zu dem neuen Theme³ meines Blogs passt...
   ... und einige meiner ersten Worte waren "Aronal" und "Elmex", behaupten jedenfalls die Erzeuger.

Ich bin gespannt, ob dieser Blogeintrag polarisiert. Nur .NET, nur Technik-bla, bäh, ist doch langweilig.
In diesem Sinne, schnell in's aufregende Jahr 2008!

PS: Der Artikel zu Zeit & Herzrasen – Achtung Werbung – ist jetzt auch online veröffentlicht worden.

¹ mir bekannte Lektoren ausgeschlossen ;)
² und ist eine Hommage an zwei beständige "Korrekturisten" von mir :)
³ seit 12/2007

--
Quelle erste Abbildung: welt.de

Die Windows Sidebar ist eines der anfälligsten Bestandteile von Windows Vista. Bei einer Leserin meines Blogs lies sich die Sidebar mit gängigen Mitteln nicht wieder starten und blieb hartnäckig einfach aus.

Die Einstellung der Sidebar lassen sich übrigens bequem sichern und wiederherstellen:

Hier der Weg, wie wir die Sidebar "wiederbelebt" haben:

  • auf Start klicken
  • "Eingabe" eingeben
  • auf Eingabeaufforderung mit der rechten Maustaste klicken, Als Administrator ausführen wählen
  • in der Eingabeaufforderung eingeben (Reihenfolge muss beachtet werden):
    • taskkill /f /im sidebar.exe
    • cd "%ProgramFiles%\Windows Sidebar\"
    • regsvr32 -u sbdrop.dll
    • regsvr32 -u wlsrvc.dll
    • regsvr32 atl.dll
    • regsvr32 sbdrop.dll
    • regsvr32 wlsrvc.dll
      Sidebar per Eingabeaufforderung wiederherstellen 
    • oder alternativ
      • Datei Sidebar_neu_registrieren z. B. auf den Desktop herunterladen & entpacken
      • mit der rechten Maustaste anklicken und Als Administrator ausführen wählen

Falls die Sidebar nicht mehr automatisch startet:

  • zuerst alle ausgeblendeten Symbole einblenden
    Sidebar – automatischer Start
  • auf das Symbol der Sidebar mit der rechten Maustaste klicken und Eigenschaften wählen
    Sidebar – automatischer Start
  • dort die Option Sidebar beim Start von Windows starten aktivieren
  • OK
    Sidebar – automatischer Start

Falls die Sidebar bzw. Minianwendungen nicht korrekt starten, kann die Sidebar neu initialisiert werden¹:

  • auf Start klicken
  • "Eingabe" eingeben, auf Eingabeaufforderung klicken
  • in der Eingabeaufforderung eingeben (Reihenfolge muss beachtet werden)
    • taskkill /f /im sidebar.exe
    • del "%LOCALAPPDATA%\Microsoft\Windows Sidebar\settings.ini"
  • oder alternativ

Folgende Artikel sind eventuell auch nützlich:

¹ bisherige Einstellungen gehen verloren

Ready for take off, Zeit für Helden, Zeit für Gewinner, Zeit für Experten, Zeit schenken und Zeit gewinnen.
Noch nur noch 3 Monate, dann ist es Zeit; Zeit für die neuen Werkzeuge von Microsoft. Vom 19. – 21. Februar 2008 findet in Frankfurt am Main auf der Frankfurter Messe der Launch von Windows Server 2008, SQL Server 2008 und Visual Studio 2008 statt. Auch wenn die Veranstaltung sehr groß angelegt ist und mehrere tausend Teilnehmer Platz finden, ist es nur noch eine Frage der Zeit, bis alles ausverkauft ist. Anreiz ist, dass Teilnehmer Windows Server 2008, SQL Server 2008, Visual Studio Team Foundation Server 2008, Visual Studio 2008 und entweder das Buch "Geschäftsprozesse mit SharePoint Server 2007" oder „Microsoft SQL Server 2008 – Konfiguration, Administration und Programmierung“ erhalten.

Frankfurter MesseWas soll ich sagen. Ich bin da natürlich vor Ort, auch als einer der vielen ATEs; Ask the Expert. Martin ist z. B. auch da. Klar ist, für welchen Bereich ich dort bin: Device Application Development, denn eine der häufigsten Fragen an mich in letzter Zeit war z. B. "geht WCF etwa auch mobil!?". Daher kann bzw. muss sogar inmitten der ganzen  Technologien die "Mobile!"-Flagge ganz weit hochgehalten werden. Auch klar ist, dass dieser Launch ein wahres IT-Fest wird. ...

... Wer den Launch verpasst, kann später auch nicht sagen: "Kind ich war da dabei!" ;)


Quelle Abbildung: messefrankfurt.com, Frankfurter Messe

Im Blogeintrag Review Nihuo Web Log Analyzer – IIS Logs analysieren oder ob Scott Hanselman zu viel Zeit verwendet habe ich über VisualLogParser vs. Nihuo Web Log Analyzer geschrieben.

Ein Ergebnis davon ist, dass VisualLogParser eher als Werkzeug für präzise Suchabfragen als für einen Überblick Verwendung finden sollte. Eine Suchanfrage in diesem Kontext ist z. B. "zeige alles, was jemals aus /gehezu heruntergeladen wurde". Die Suchanfrage könnte so aussehen (für COMPUTERNAME ist bei c-ip <> der Name des Servers einzusetzen):

SELECT	*
FROM	'\\COMPUTERNAME\Logs\torstenweber.de\W3SVC11223344\*.log'
WHERE	cs-uri-stem LIKE '/gehezu/%' AND
	cs-uri-stem NOT LIKE '/gehezu/' AND
	s-ip <> c-ip AND
	c-ip <> 'COMPUTERNAME'

VisualLogParser

Das SELECT-Statement ist zu verändern:

  • für "ermittle die Gesamtsumme in Bytes von allem, was je von /gehezu heruntergeladen wurde"¹:
SELECT	SUM(sc-bytes)

  • Für "Anzahl von allem, was je von /gehezu heruntergeladen wurde":
SELECT	COUNT(sc-bytes)

¹ einen möglichen Überlauf gilt es zu beachten

Logbücher zu analysieren macht Spaß. Zum einen, weil man sieht, wie vorsintflutartig auch erfolgreichste Suchmaschinen prinzipiell arbeiten und so Suchanfragen im Blog landen, die eine ganz andere Semantik haben. Anderseits lässt sich nachverfolgen, welche Blogeinträge am häufigsten gelesen werden, wo man z. B. einen "Schlüsselwort-Treffer" für die Suchmaschinen gelandet hat. Sehr erschreckend wiederum ist, dass Öffentliche & Unternehmen IP-Adressen den Mitarbeiternamen bzw. Räumlichkeiten zuordnen:

  • mitarbeitername.unternehmenoderoeffentliche.de
  • raum.unternehmenoderoeffentliche.de

So lassen sich ungewollt leicht Profile erstellen, wer was mit welchen Häufigkeiten liest. Freunde, Feinde, werden so transparent – der pure Daten-GAU. Zugriffe ins Internet sollten doch mindestens über einen Proxy geleitet oder die IP-Adresse nicht mit dem Namen verknüpft werden?

Eine Analyse von Logbüchern kann dabei entweder über eine in den meisten Blogsystemen enthaltene Funktionalität erfolgen oder aber über Anwendungen für die vom Server erzeugten Logbücher. Eine solche Anwendung ist LogParser, welche Scott Hanselman einsetzt und für die es einen grafischen Aufsatz namens Visual LogParser gibt.

Das nachfolgende Bild zeigt, wie Analysen in DasBlog aussehen. Nicht intuitiv, smart oder sortierbar.

Web Log Analyzer – dasBlog Funktionalität

Das nachfolgende Bild zeigt, wie eine Suchabfrage bei Visual LogParser aussieht. Das Besondere ist also, dass Abfragen in SQL-Syntax auf Logbücher abgefeuert werden können.

Web Log Analyzer – Visual LogParser

So lassen sich exakte Suchabfragen absetzen und nur die entsprechenden Treffer werden angezeigt. Das nachfolgende Bild zeigt das Ergebnis der Suchabfrage "liste jede Abfrage einer ASPX-Datei, die jeweils von *.name.de kam, auf".

Web Log Analyzer – Visual LogParser

Das sind bisher damit zwei Werkzeuge. Eines, DasBlog-Funktionalität, was grob den Verlauf des Erfolgs eines Blogs anzeigt, eines, welches präzise Suchabfragen ermöglicht, aber für große Datenmengen nicht wirklich gebrauchbar ist. Finde ich zumindest. Scott Hanselman meint zu LogParser1, 2:

... a super-psycho command-line tool, and we all know how I love those. But, it's also got a COM Interface so it programmable/scriptable as well. ...

Quelle: hanselman.com, Parsing my IIS Log Files with LogParser 2.2 to learn more about Blogs stats from NewsGator and NewsGatorOnline

Ich möchte es dagegen lieber smart. Ich möchte eine unmittelbar verfügbare Analyse. Der andere Weg ist Logbücher herunterzuladen, eine Anwendung zu starten, sich Gedanken über Suchabfragen zu machen, Logbücher zu parsen (+ zu warten) und eventuell noch einen grafischen Aufsatz dafür zu benötigen. Das kostet Zeit, viel zu kostbare Zeit. Welche Lösungen gibt es also für einen automatischen Ansatz?

Nihuo Web Log Analyzer

Web Log Analyzer – Nihuo Web Log AnalyzerNihuo Web Log Analyzer kann ich als Werkzeug nur empfehlen. Es kostet nicht die Welt, bringt viel Funktionalität mit und reicht bestimmt für die meisten Betreiber von Blogs & Webseiten. aus.

Was ist alles dabei? Neben Statistiken wie die Darstellung aller Zugriffe unterteilt in Gesamt, Normal, Spider und Gestohlen, geht es weiter mit Statistiken wie "Anzal Seitenaufrufe pro Besucher" oder "Besuche nach Tageszeit" bis hin zu "Aktivität pro Tag". Dieser Blog wird beispielweise am häufigsten am Mittwoch und am wenigsten am Samstag gelesen. In der Zeit von 8 - 15 Uhr finden wiederum die meisten Zugriffe statt, mit den zwei Spitzenwerten um 9 und 12 Uhr. Um das mit einem Werkzeug wie einem Parser herauszubekommen, geht sicherlich einige kostbare Zeit verloren. Als Kritikpunkt könnte man anführen, dass die Statistiken keinen interessieren. Das könnte sein, aber sie sind nur ein kleiner Teil der Möglichkeiten zur Analyse mit Nihuo Web Log Analyer.

Interessant sind z. B. die Verweise: Von welchen Domains kommen die meisten Links; von welchen Seiten dieser Domains kommen sie. So kann beispielsweise ermittelt werden, woher Traffic – Stichwort gestohlene Objekte – kommt. Bei mir sorgte Anfang Oktober, siehe Gesamtstatistik Kaffeetasse und Aschenbecher in einemin der Nähe vom 19.10., ein Bild von einer Kaffeetasse, die für Kaffee und aber auch als Aschenbecher verwendet wird, für hohen externen Traffic. Das Bild hat sich fast geradezu viral in Gästebüchern vermehrt – einmal umbenannt, von der Indexierung bei Suchmaschinen ausgeschlossen und schon ist das Problem gelöst.

So sieht eine Gesamtstatistik von Nihuo Web Log Analyzer aus. Seit der Geburtsstunde meines Blogs am 02.05.2007 hat sich viel getan. Konkrete Zahlen sagen hier nichts, darum habe ich sie weggelassen.

Web Log Analyzer – Nihuo Web Log Analyzer

Weitere sinnvolle Übersichten und Analysen sind z. B.

  • die meist gelesenen Seiten (die könnte man z. B. mit Inhalt ausbauen, besonders pflegen etc.)
  • die Wege, über die Traffic auf den Blog, die Webseiten kommt (z. B. häufigste Suchanfragen)
  • Top Fehler (404-Fehler, fehlerhafte Links, Grafiken etc.)
  • andere Clientfehler wie z. B. fehlgeschlagene Login-Versuche, Serverattacken

Die Analysen können dabei

  • Jährlich,
  • Monatlich,
  • Wöchentlich und
  • Täglich

skaliert werden. Wöchentlich und Täglich sollten dabei für die meisten Anwender nicht notwendig sein.

Web Log Analyzer – Nihuo Web Log Analyzer

Letztendlich steht eine ganze Reihe Analysen zur Verfügung, von denen einige standardmäßig nicht mal aktiviert sind. Die Analysen können mit Filtern und Tracking verbunden werden.

Web Log Analyzer – Nihuo Web Log Analyzer

Web Log Analyzer – Nihuo Web Log Analyzer

Sehr gut ist, dass die Logbücher der IIS in eine eigene Datenbank geschrieben werden und prinzipiell so dann in bestimmten Zeitabständen auch automatisiert gelöscht werden können.

Mit Nihuo Web Log Analyzer können Analysen auf Bedarf erstellt werden. Besser ist aber, die Erstellung dieser in einen Zeitraum zu legen, in dem es potentiell wenig Traffic gibt – z. B. nachts um 4 Uhr. Denn sowohl die Ersterstellung der Analysen als auch Aktualisierung erzeugt auf Server bzw. Rechner viel Last, auch wenn nur für einige Minuten pro einzelnem Projekt (Webseite). Das für eine Automatisierung Nihuo Web Log Analyzer als Service gestartet werden kann, ist offensichtlich.

Web Log Analyzer – Nihuo Web Log Analyzer

Dabei ist zu beachten, dass bei Analysen bei täglichen Aspekten Nihuo Web Log Analyzer nichts verkehrt macht, sondern am 14.12.2007 bei der Aktualisierung der Analysen um 4 Uhr auch nur 4 von 24 Stunden einbezogen werden. Vielleicht kommt ja in einer nächsten Version "nur komplette Tage" als Option.

Web Log Analyzer – Nihuo Web Log Analyzer

Wird  ein Crossposting verwendet, muss unter Site URL in den Projekteigenschaften die Adresse davon eingetragen werden. Ansonsten wird es als externer Traffice erkannt.

Web Log Analyzer – Nihuo Web Log Analyzer

Um es jetzt gegenüber Scott Hanselmans Lösung à la VisualLogParser bequem zu haben, muss nur noch bei jedem Projekt eingestellt werden, dass die Ergebnisse unterhalb jeder Webseite gespeichert werden.

Also z. B. domain.de/stats und dieses Verzeichnis sollte logischerweise noch mit einer Authentifizierung gesichert werden. Schon reicht ab sofort ein einziger Login der z. B. mit RoboForm ebenfalls noch automatisiert werden kann. Das ist User Experience und smart.

¹ VisualLogParser ist der grafische Aufsatz für LogParser
² vgl. VisualLogParser, IIS Logs – Anzahl heruntergeladene Dateien, Datenverkehr ermitteln

Zum zeilenweisen sortieren nehme ich bisher UltraEdit. Kann das eigentlich nicht Visual Studio auch? Nein, dieses Leistungsmerkmal nicht enthalten (@Tim: wie wäre das als ein Feature Request). Es gibt zwar eine Formatierung über Bearbeiten, Erweitert, Dokument formatieren, aber das ist auch schon alles. Extra dann UltraEdit einzusetzen, auch wenn es per Kontextmenü über die in Projektmappen enthaltenen Dokumente leicht geht, ist halt keine smarte Lösung. Die Anforderung, nur den markierten Bereich zu sortieren, bringt dann alles mit den Vorgängen Ausschneiden, Sortieren und Einfügen gleich noch mehr ins Wanken. Das habe ich als Anlass genommen und ein Makro geschrieben.

So sieht eine Datei, beispielweise eine OPML-Datei für einen Blog, unsortiert aus.
Sie ist hier im Beispiel partiell unsortiert und enthält leere Zeilen.

zeilenweise sortieren, nur den marktierten Bereich, in Visual Studio

Für eine Sortierung ist einfach der entsprechende Bereich zu markieren.
Die komplette Datei kann per Bearbeiten, Alle auswählen¹ oder STRG + A auch sortiert werden.

zeilenweise sortieren, nur den marktierten Bereich, in Visual Studio

Dann ist das Makro SortSelectionAndSmartFormat auszuführen und schon ist alles sortiert und formatiert.
So einfach geht's. Und integriert.

zeilenweise sortieren, nur den marktierten Bereich, in Visual Studio

Hier noch das Makro:

#Region "Sub SortSelectionAndSmartFormat"
   ' Sortiert und formatiert die aktuelle Auswahl.
   Sub SortSelectionAndSmartFormat()
      If (DTE.ActiveDocument Is Nothing) Then
         Exit Sub
      End If

      If (DTE.ActiveDocument.ReadOnly) Then
         Exit Sub
      End If

      Dim currentTextSelection As TextSelection
      currentTextSelection = DTE.ActiveDocument.Selection

      If (currentTextSelection.TextRanges.Count = 1) Then
         Exit Sub
      End If

      If (DTE.UndoContext.IsOpen) Then
         DTE.UndoContext.Close()
      End If

      Try
         DTE.UndoContext.Open("SortSelectionAndSmartFormat")
         currentTextSelection.SmartFormat()
      Catch
      End Try

      Try
         Dim currentLines() As System.String = Split(currentTextSelection.Text, vbCrLf)

         System.Array.Sort(currentLines)
         currentTextSelection.Delete()

         For Each i As System.String In currentLines
            If Not i = System.String.Empty Then
               currentTextSelection.Insert(i.Trim(vbCrLf) & vbCrLf)
            End If
         Next
         DTE.UndoContext.Close()

      Catch
      End Try

      Exit Sub
   End Sub
#End Region
#Region "Sub SortSelectionAndSmartFormat"
   ' Sortiert und formatiert die aktuelle Auswahl.
   Sub SortSelectionAndSmartFormat()
      If (DTE.ActiveDocument Is Nothing) Then
         Exit Sub
      End If

      If (DTE.ActiveDocument.ReadOnly) Then
         Exit Sub
      End If

      Dim currentTextSelection As TextSelection
      currentTextSelection = DTE.ActiveDocument.Selection

      If (currentTextSelection.TextRanges.Count = 1) Then
         Exit Sub
      End If

      If (DTE.UndoContext.IsOpen) Then
         DTE.UndoContext.Close()
      End If

      Try
         DTE.UndoContext.Open("SortSelectionAndSmartFormat")
         currentTextSelection.SmartFormat()
      Catch
      End Try

      Try
         Dim currentLines() As System.String = Split(currentTextSelection.Text, vbCrLf)

         System.Array.Sort(currentLines)
         currentTextSelection.Delete()

         For Each i As System.String In currentLines
            If Not i = System.String.Empty Then
               currentTextSelection.Insert(i.Trim(vbCrLf) & vbCrLf)
            End If
         Next
         DTE.UndoContext.Close()

      Catch
      End Try

      Exit Sub
   End Sub
#End Region

Und hier noch das Makro SortSelectionAndSmartFormat (1,21 KB) zum Download.

¹ es sollte wohl richtig heißen "Alles auswählen", da hat wohl jemand das "s" vergessen Tim