code it

Martins Tech Blog

Intellisense für eigene JavaScript-Funktionen

Seit Visual Studio 2008 gibt es die Möglichkeit, JavaScript-Funktionen so zu dokumentieren, dass auch die Intellisense in der Lage ist, Informationen anzuzeigen. Um so erstaunter bin ich jedes Mal, noch häufig auf Konstrukte wie diese hier zu stoßen:

// function that implements some magic
function DoSomething(parameter) {

}

Der Versuch ist ganz gut, aber es geht noch besser. Nachteil dieser Art der Dokumentation ist nämlich, dass Intellisense dann genau auch nur die Methodensignatur anzeigt, nicht aber nähere Informationen zur Methode.

Mit nur einer kleinen Umstellung kann man diese Unterstützung aktivieren:

function DoSomething(parameter) {
    /// <summary>
    /// function that implements some magic
    /// </summary>
    /// <param name="parameter">the dom element's id</param>

}

Was auffällt: Der Aufbau der Dokumentation ist dem was wir schon für C#-Funktionen kennen sehr ähnlich. Einziger Unterschied: In C# wird der Kommentar über die Methode geschrieben und hier in die Methode. Ab diesem Zeitpunkt ist Visual Studio in der Lage, die Informationen wie gewohnt auch schon während des Tippens anzuzeigen.

Wie schon beschrieben ähnelt der Aufbau sehr dem, was man schon von der Dokumentation in C# kennt - es sollte also keine zu große Einstiegshürden für Entwickler geben. Wer eine kurze Einführung braucht, dem sei der Blogpost von Bertrand Le Roy ans Herz gelegt.

Kontextmenü von Smart Tags im Visual Studio anzeigen

Meiner Meinung nach sind die Smart Tags in Visual Studio ein sehr schönes Feature, die ich besonders häufig für das Umbenennen von Variablen oder für das Erzeugen von Methodenrümpfen beim Implementieren von Interfaces verwende.

In der täglichen Arbeit finde ich es allerdings etwas nervig, den doch etwas klein geratenen Smart Tag mit der Maus zu treffen.

Wie für so vieles gibt es auch hier eine Tastenkombination: Laut Tooltip kann das Smart Tag Menü mit Alt+Shift+F10 geöffnet werden. Was der Tooltip nicht sagt: Mit der viel einfacheren Tastenkombination Strg+. öffnet sich das Menü ebenfalls.

Go Offline?

Eine sehr praktische Möglichkeit bei der Arbeit mit Visual Studio in Verbindung mit dem Team Foundation Server ist es, dass man auch Offline arbeiten kann und dann später im Online-Modus die Änderungen zusammengesucht werden und man einchecken kann.

Ist keine Verbindung zum TFS möglich, wenn ein entsprechendes Projekt geöffnet wird, geht Visual Studio automatisch in den Offline-Modus und man kann mittels des “Go Online”-Buttons in den Online-Modus wechseln.

Leider funktioniert der umgekehrte Weg nicht. Ist man Online und möchte in den Offline-Modus wechseln, sucht man den “Go Offline”-Button vergeblich.

Doch wo ein Wille ist, ist auch ein Weg – der Zauberbefehl lautet tfpt tweakui:

  • Visual Studio schließen
  • die aktuellsten Team Foundation Power Tools herunterladen und installieren
  • Visual Studio Command Prompt öffnen
  • tfpt tweakui eingeben
  • den Server markieren und auf Edit klicken
  • Server ist offline anhaken
  • Visual Studio neu öffnen

Visual Studio öffnet das Projekt nun im Offline-Modus.

Attach-to-Webserver-Makro für Visual Studio

In letzter Zeit mache ich wieder sehr viel Webentwicklung und –debugging. Dabei fand ich es etwas nervig für das Debugging immer die Menüstruktur mit den Punkten Debug -> Attach to Process zu bedienen und dann aus der Liste alle w3wp-Prozesse auszusuchen.

Glücklicherweise gibt es dafür ja die Makro-Funktion. also schnell ein Makro geschrieben:

Imports System
Imports EnvDTE80
Imports System.Windows.Forms

Public Module AttachToWebServer

    Public Sub AttachToWebServer()
        Dim W3WPProcName As String = "w3wp.exe"

        If Not AttachToProcess(W3WPProcName) Then
            MessageBox.Show(String.Format("Process {0} cannot be found", W3WPProcName), "Attach to webserver macro")
        End If

    End Sub

    Public Function AttachToProcess(ByVal ProcessName As String) As Boolean

        Dim Processes As EnvDTE.Processes = DTE.Debugger.LocalProcesses
        Dim Process As EnvDTE.Process
        Dim ProcessFound As Boolean = False

        For Each Process In Processes
            If (Process.Name.Substring(Process.Name.LastIndexOf("\") + 1) = ProcessName) Then
                Process.Attach()
                ProcessFound = True
            End If
        Next

        AttachToProcess = ProcessFound

    End Function
End Module

Damit nun das Makro nicht immer händisch über den Makro-Explorer aufgerufen werden muss, noch schnell ein ein Shortcut dafür vergeben und: Voilà!

Visual Studio Tipp: Shortcut für ein Makro vergeben

Makros erleichtern die Arbeit mit Visual Studio. Doch nicht immer möchte man über den Makro-Explorer erst sein Makro auswählen. Besonders bei häufig benutzten Makros ist es sinnvoll, einen Shortcut zu vergeben. Dazu geht man wie folgt vor:

  1. Unter dem Menüpunkt Tools den Eintrag Options auswählen.
  2. Unter Environment auf Keyboard klicken.
  3. Im Auswahlfeld Show commands containing gibt man nun “macros.” ein. Damit erscheinen hier alle Makros.
  4. Hier markiert man nun das gewünschte Makro.
  5. Im Feld Press shortcut key(s) drückt man nun einmal die Tastenkombination, mit der man das Makro künftig aufrufen möchte – z.B. Strg + Shift + Alt + A
  6. Nachdem man auf Assign und OK geklickt hat, ist der neue Shortcut aktiv.

Die detaillierte Beschreibung gibt es auch nochmal in der MSDN.

Aufgabenliste in der Visual Studio IDE aus Kommentaren erzeugen

Heute möchte ich mal auf die Aufgabenliste in der IDE etwas näher eingehen. Hier kann man gut die noch zu erledigenden Aufgaben eintragen, verwalten und abarbeiten.

Weniger bekannt, aber mindestens genauso sinnvoll, ist die Möglichkeit, Aufgabenlisten auch aus Quellcodekommentaren zu erzeugen. Dazu kann man einfach im Kommentar die Schlüsselwörter TODO, HACK oder UNDONE verwenden.


In der Aufgabenliste sieht man diese Aufgaben dann im Bereich Comments.

Zusätzlich zu diesen drei Token kann man unter Tools/Options/Environment/Task List neue Token anlegen. Vorteil dieser selbst angelegten Token: Bei diesen kann die Priorität geändert werden.