Verschwommenes Visual Studio unter Windows 10

Wenn man unter Windows 10 die IDE Visual Studio nutzt, kann es vorkommen das die Schrift der Menüs und des Editorfensters unscharf aussieht. Hier kann es helfen die Skalierung der einzelnen Bildschirme, in den Anzeigeeinstellungen, auf identische Werte zu stellen.

Visual Studio 2017 unter Windows 10

Hilft das nicht, kann ein Registry-Eintrag zur Abhilfe beitragen. Dafür muss im Pfad (unter Umständen muss Layers als neuer Schlüssel angelegt werden):

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

ein neues Schlüssel-/Wertpaar mit dem Namen:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\devenv.exe

und dem Typ Zeichenfolge angelegt werden. Der Wert entspricht dem kompletten Pfad zum Dateinamen devenv.exe; entsprechend funktioniert das Ganze auch für frühere Versionen von Visual Studio. Als Wert für den neuen Schlüssel muss:

~ HIGHDPIAWARE

vergeben werden. Anschließend sollte das Betriebssystem neugestartet werden. Visual Studio sollte nun im Idealfall keine unscharfen Menüs und Fenster mehr anzeigen.

Visual Studio unter Unity für macOS als Skripteditor nutzen

Standardmäßig nutzt Unity das eingebaute MonoDevelop, wenn es darum geht Quellcode zu bearbeiten. Ist allerdings auf dem Mac Visual Studio installiert, so kann dieses als primäre IDE genutzt werden. Dazu müssen die Preferences von Unity geöffnet werden.

Die Unity-Einstellungen

Dort findet sich der Punkt External Tools. In diesem Tab findet sich die Einstellung External Script Editor. Bei installiertem Visual Studio kann dieses eingestellt werden und wird damit in Zukunft von Unity genutzt.

SonarLint unter IntelliJ IDEA

Statische Codeanalyse ist eine feine Sache. Sie weißt auf Fehler und Probleme schon zur Entwicklungszeit hin. Dafür gibt es unter anderem Systeme wie SonarQube. Wem ein solchen System zu groß ist, der kann SonarLint nutzen, welches statische Codeanalyse lokal in der gewünschten IDE liefert.

sonarlint.org/intellij/

sonarlint.org/intellij/

Für IntelliJ IDEA findet man die passende Version dabei unter sonarlint.org/intellij/. Daneben gibt es auch Versionen für Eclipse und Visual Studio. SonarLint wird dabei mit einem vorgefertigtem Regelsatz geliefert und kann nach der Installation gleich genutzt werden. SonarLint ist unter der GPL in Version 3 (bzw. der LGPL) lizenziert und damit freie Software.

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.

Resource Refactoring Tool für Visual Studio 2013

Mit dem Visual Studio Addin Resource Refactoring Tool ist es möglich Strings in Ressourcendateien zu übertragen. Dies wird unter anderem für solche Zeichenketten benötigt, welche später übersetzt werden sollen. Leider gibt es auf der offiziellen Seite keine Version für das Visual Studio 2013. Deshalb habe ich mal ein funktionierendes Kompilat gebaut, welcher hier heruntergeladen werden kann. Die Installation ist in der beigelegten Textdatei beschrieben.

Das Resource Refactoring Tool im Visual Studio 2013

Das Resource Refactoring Tool im Visual Studio 2013

Problematisch an dem Resource Refactoring Tool ist das es die Addin-Schnittstelle des Visual Studios nutzt, welche als veraltet gekennzeichnet ist. Unter dem Namen Jinnee.Prelude gibt es mittlerweile eine Extension, welche in der Visual Studio Gallery zu finden ist, und als Alternative betrachtet werden kann. Allerdings läuft sie noch nicht so rund, wie das Resource Refactoring Tool.