Quelltext im Visual Studio automatisch formatieren

Das Visual Studio formatiert den Quellcode automatisch nach den eingestellten Richtlinien. Wenn man nun aber die Richtlinien ändert, steht man vor dem Problem, das der Quelltext noch nach den alten Richtlinien formatiert ist.

Die Formatierungseinstellungen im Visual Studio

Die Formatierungseinstellungen im Visual Studio

Leider gibt es keine direkte Option im Visual Studio um den bestehenden Quelltext am Stück neu zu formatieren. Allerdings kommt man mit einem kleinen Makro (abgeleitet vom VS Formater Macro) an dieser Stelle weiter. Dazu wird im Visual Studio die Package Manager Console (zu finden unter Tools -> NuGet Package Manager -> Package Manager Console) geöffnet und dort folgendes eingegeben:

function f($projectItems) { $projectItems | ? { $_.Name -ne $null -and $_.Name.EndsWith( ".cs" ) -and -not $_.Name.EndsWith( ".Designer.cs" ) } | % { $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}') ; $win.Activate() ; $DTE.ExecuteCommand('Edit.FormatDocument') } ; if ($projectItems) { $projectItems | % { f($_.projectItems) } } }
 
$dte.Solution.Projects | % { f($_.ProjectItems) }

Das Visual Studio öffnet nun alle *.cs Dateien in der geöffneten Solution und formatiert die Quelltexte neu. Dieser Vorgang ist dabei relativ langsam und führt bei größeren Projekten dazu das das Visual Studio einfriert. Auf Stack Overflow gibt es eine elegantere Lösung:

function FormatItems($projectItems) {
    $projectItems |
    % {
        # Write-Host "    Examining item: $($_.Name)";

        if ($_.Name -and $_.Name.ToLower().EndsWith(".cs") `
            -and (-not $_.Name.ToLower().Contains(".designer."))) {

            $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}');
            $win.Activate();

            $dte.ExecuteCommand('Edit.FormatDocument');

            if (!$_.Saved) {
                Write-Host "    Saving modified file: $($_.Name)";
                $dte.ExecuteCommand('File.SaveSelectedItems');
            }

            $dte.ExecuteCommand('Window.CloseDocumentWindow');
        }

        if ($_.ProjectItems -and ($_.ProjectItems.Count -gt 0)) {
            # Write-Host "    Opening sub-items of $($_.Name)";

            FormatItems($_.ProjectItems);
        }
    };
}

$dte.Solution.Projects | % {
    Write-Host "-- Project: $($_.Name)";

    FormatItems($_.ProjectItems)
}
;

Bei dieser Lösung wird jede Datei nach der Neuformatierung, gespeichert und wieder geschlossen. Leider wird auch diese Lösung von Datei zu Datei langsamer, so das sie für größere Projekte wiederrum unbrauchbar ist. Mit der Extension Format Document gibt es eine Lösung welche schnell genug ist, allerdings funktioniert diese nur unter Visual Studio 2010. Nach einigen Anpassungen habe ich eine Version gebaut, welche auch unter Visual Studio 2012 und 2013 läuft. Das Problem an dieser Variante ist, das Dateien in Ordnern nur berücksichtigt werden wenn der Ordner im Solution Explorer geöffnet ist. Alles in allem ist keine der vorgestellten Lösungen wirklich optimal, allerdings kann man viele Fälle mit den vorgestellten Lösungen lösen.

Mupen64Plus AE auf dem Fire TV konfigurieren

Mittels Sideloading kann man unter auch Emulatoren auf den Fire TV von Amazon bringen. Für die Emulation eines Nintendo 64 eignet sich der Emulator Mupen64Plus AE, bei welchem es sich um freie Software (unter GPL lizenziert) handelt. Allerdings gibt es mit diesem Emulator auf dem Fire TV ein Problem. Da der Fire TV keinen Möglichkeit für Toucheingaben bietet, kann man die Controller nicht konfigurieren.

Die Einstellungen für die Controller-Konfiguration

Die Einstellungen für die Controller-Konfiguration

Abhilfe schafft hier ein Blick in die Einstellungen. In den erweiterten Einstellungen findet sich der Punkt Erreichbarkeit. Wenn man diese Option auf Großbildschirm-Modus stellt, ist der bzw. die Controller auf dem Fire TV konfigurierbar.

HitchBOT in Quelltext

HitchBOT ist in den letzten Wochen nicht nur durch Kanada, sondern auch durch die Presse gewandert. Es handelt sich bei HitchBOT um einen Roboter aus günstigen Bauteilen, dessen Ziel es war quer durch Kanada zu reisen. Während der Fahrt konnte man sich dabei mit HitchBOT unterhalten. Bei diesem Projekt sollte die Frage beantwortet werden, ob Robotern den Menschen vertrauen können.

Die Software welche HitchBOT antreibt ist dabei seit knapp sechs Monaten freie Software. Lizenziert ist das ganze dabei unter der GPL in Version 2. Zu finden ist der Quellcode auf GitHub. Die offizielle Seite von HitchBOT kann unter hitchbot.me besucht werden.

Quelltextlesung

Im Zuge der Heartbleed-Problematik ist vielen bewusst geworden wie wenig man den Quelltext kennt den man tagtäglich nutzt.

Aktivieren Sie JavaScript um das Video zu sehen.
Video-Link: https://www.youtube.com/watch?v=51RWvbrIHfk

Aufbauend auf diesem Wissen ist die Quelltextlesung entstanden, in dessen Verlauf bekannte Softwarepakete und Applikationen zum Verständnis gereicht werden. Deren zweite Ausgabe kann man in dem Video oben bewundern. Die Quelltextlesung ist hoffentlich eine Idee welche auf fruchtbaren Boden fällt.

Online im .NET Quelltext stöbern

Seit 2007 kann man bei der Entwicklung mittels .NET in den Quelltext des Frameworks debuggen. So kann man Fehler finden welche mit dem Unterbau zusammenhängen, was durchaus mal vorkommt.

referencesource.microsoft.com

referencesource.microsoft.com

Während man in den frühen Versionen den Quelltext nur mittels des Visual Studios anschauen konnte, gibt es nun seit einiger Zeit auch eine Möglichkeit dies Online zu tun. Auf der Seite referencesource.microsoft.com kann sich der Quelltext des gesamten .NET Frameworks problemlos im Browser angezeigt werden. Lizenziert ist das ganze dabei unter der Microsoft Reference Source License (MS-RSL).