VS-Tipps & Tricks: Der Property Manager, der unbekannte Helfer.

Es gibt oft genug die Problematik, dass man eine bestimmte Environment Variable für ein Projekt setzen will, oder auch dass man für eine Gruppe von Projekten ein bestimmtes Include-Verzeichnis hinzufügen will oder bestimmte andere Projekteinstellungen benötigt.

Der bisherige Weg war meistens Handarbeit wenn es um die Projekteinstellungen ging. Bei Environment Variablen hatte man oft genug wenig Chancen.

Ein Weg ist es, einen Batch File zu schreiben, der die Environment Variablen setzt und dann die IDE mit DEVENV /useenv startet. In diesem Fall werden nur die entsprechenden Environment Variablen für LIB/INCLUDES etc. verwendet. Zusätzlich natürlich auch die eigenen spezifizierten.
Das hat aber den Nachteil, dass man nicht vergessen darf die IDE zu verlassen und neu zu starten hat, bevor man ein neues „normales“ Projekt bearbeiten will.
Summa summarum: Geht, ist aber kein guter Weg.

Es gibt eine weitaus effektivere Möglichkeit Projekteinstellungen einfach zu manipulieren und auch einfach für andere Projekte zu übernehmen: Der Property Manager!

Mit dem Property Manager kann man Projekteinstellungen erzeugen und zusammenfassen. Diese Projekteinstellungen lassen sich in einer XML Datei abspeichern (vsprops-Dateien) und auf andere Projekte auf einfache Art anwenden indem man nur die entsprechende Datei in das Projekt in den Projekteinstellungen einfügt.

Das nette ist, dass der Property Manager es auch erlaubt Environment Variablen zu setzen, die dann in den Optionen und auch den Custom-Build-Steps auf einfache Weise über $(MyUserMacro) nutzen lassen.

Und so geht man vor:

  • Über View -> Other Windows holt man sich den Property Manager auf den Bildschirm. Man kann nun sofort sehen welche aktuellen Properties gesetzt sind. (Zum Beispiel sieht man sofort woher zum Beispiel bei konvertierten Projekten das define _VC80_UPGRADE kommt)
  • Man findet zwei Schalter Add New Project Property Sheet um ein neuen Satz Properties anzulegen und Add Existing Property Sheet um ein bereits existierendes Property Sheet anzuwenden (dazu später).
  • Nun kann man einfach wie man es gewohnt ist, die gewünschten Eigenschaften in diesem Sheet einstellen, die man benötigt. Rechter Mausklick oder Doppelklick genügt und man erhält Zugriff auf alle Eigenschaften der Projekte. Ob es nun den Compiler oder Linker betrifft ist egal.
  • Wichtig ist gleich der zweite Eintrag User Macros. Hier kann man nun nach Lust und Laune Environment Variablen und andere defines setzen. Besonders interessant ist hier auch die Möglichkeit Werte anzuhängen an eine bestehende Environemt Variable. Nett für INCLUDE und LIB!

Zuletzt sei erwähnt, dass sich eine solche vsprops Datei auch einfach in ein bestehendes Projekt eingefügt werden kann. Das geht zum einen über den Property Manager mit dem schon erwähnten Schalter Add Existing Property Sheet , oder aber auch direkt über die Projekteinstellungen. Dazu einfach die Projekteigenschaften öffnen und den Abschnitt General auswählen. Dort findet man den Eintrag Inherited Projekt Property Sheets in dem man direkt die entsprechenden vsprops Dateien angeben kann.

❗ Man sollte aber auch daran denken, diese speziellen vsprops Dateien dem eigenen Source Control System hinzuzufügen und auch eine entsprechende Dokumentation dazu anzulegen.
Gut ist es auch ein zentrales Verzeichnis für diese Projekteinstellungen anzulegen um eine einfache Wiederverwendung zu ermöglichen.

VS-Tipps & Tricks: Schnelle Navigation über Strg+Tab

Wenn man mit dem, aus anderen MDI-Applikationen bekannten, Tasten Strg+Tab in andere Dokumente wechselt, dann wird auch ein Navigationsfenster angezeigt. Am Anfang wunderte mich, was das für ein Geflackere war, wenn ich wie gewohnt Strg+Tab und Umschalt+Strg+Tab verwendete. Bis ich entdeckte, dass man das geöffnete Navigationsfenster noch weitaus besser nutzen kann als nur als Navigationshilfe, wo man mit dem nächsten Strg+Tab landet.

Sofort nach Drücken der Tasten Strg+Tab, kann man bei gedrückter Strg-Taste in dem Navigationsfenster über die Cursor-Tasten jede beliebige offene Datei auswählen, ohne x-mal Strg+Tab zu drücken. Besonders nett ist, dass man auch die Pfeil-Rechts und Pfeil-Links Tasten nutzen kann.

Besonders interessant ist hier, dass man auch die Toolfenster, wie z.B. den Solution-Explorer, den Ressource-View, oder im Debugger den Call-Stack sofort erreichen kann (auch wenn es dazu direkte Hotkeys gibt).

VS-Tipps & Tricks: Das Menü mit der Liste der offenen Dateien anzeigen

Visual Studio 2005, zeigt nur einen Teil der offenen Dateien, in den Tabs über dem Editor.
Man sieht dort immer nur, die zuletzt verwendeten Dateien. In der Tabulatorleiste rechts außen findet sich ein Drop-Down-Schalter, mit dem man die Liste aller offenen Dateien anzeigen kann. Gerade wenn man mit vielen Dateien arbeitet ist man oft verzweifelt auf der Suche wo die eben noch offene Datei abgeblieben ist.

Dazu muss man aber nicht zu der ungeliebten Maus greifen, auch dafür gibt es einen netten und schnellen Hotkey:
Strg+Alt+Pfeil Unten, über einen Buchstaben, kann man auch in diesem Menü, schnell eine Datei auswählen.

VS-Tipps & Tricks: Tastatureinstellungen einfach auf einen anderen Rechner übernehmen

Unter dem Tools Menüpunkt verbirgt sich eine der schönsten Funktionen der Visual-Studio IDE: Import and Export Settings…

Wenn hat es nicht schon geärgert, wenn man kurze Zeit an einem anderen Rechner sitzt (ja man hat nicht immer Roaming Profiles) und man vermisst die so geliebten individuell eingestellten Shortcuts. Früher hieß dass irgendeinen mysteriösen Registry Ast zu sichern und zu importieren. Heute?

Kein Problem! Auf meinem USB-Stick befindet sich eine Datei Keyboard.vssettings. Mit dieser netten Datei stelle ich sofort meine Einstellungen wieder her. Wie?

Zuerst einmal ertsellen wir diese nette XML-Datei:

  • Dazu wählen wir Tools -> Import and Export Settings…
  • Wir wählen Export selected environment settings
  • Dann wählen wir alles ab indem wir in die Checkbox von All Settings klicken.
  • Jetzt wird in dem Baum unter All Settings -> Options -> Environment -> Keyboard die Checkbox angeklickt.
  • Die Datei speichert man unter einem sinnvollen Namen in C:\Dokumente und Einstellungen\UserName\Eigene Dateien\Visual Studio 2005\Settings

Für den Import geht man so vor:

  • Die Datei kopiert man am einfachsten in den Ordner C:\Dokumente und Einstellungen\UserName\Eigene Dateien\Visual Studio 2005\Settings auf der entsprechenden Maschine. (kann man sich auch sparen und die Datei auf dem Stick lassen)
  • Dann wählen wir Tools -> Import and Export Settings…
  • Wir wählen Import selected environment settings
  • Speichern der aktuellen Einstellungen wenn man will
  • Jetzt sieht man schon die Datei, wenn man Sie in den Ordner kopiert hat, oder man selektiert sie nun direkt vom USB-Stick.
  • Auswählen, was man importieren will. Hier sind natürlich nur die Keyboard settings zu sehen und schon selektiert.
  • Finish und wir haben unsere Einstellungen. Super!

BTW: Dieser Weg eignet sich auch ideal um festzustellen, was man eigentlich umdefiniert hat. Die XML-Datei enthält nur die Änderungen zum angewählten Profil. Damit kann man auch mal wieder auf die Suche gehen, was eigentlich von einem selbst stammt, oder eben Standard ist…

VS-Tipps & Tricks: Command-Prompt öffnen im Projektverzeichnis

Es ist oft genug sinnvoll direkt im Projektverzeichnis eine Eingabe-Konsole zu öffnen. Ich persönliche verwende 4NT von JP-Soft, damit lassen sich viele Sachen weitaus schneller erledigen als mit dem Explorer.

Um schnell eine Eingabefenster zu öffnen kann man sich ein eigenes Tool einrichten.

  • Man klickt auf Tools -> External Tools…
  • Add Schalter anklicken
  • Dem Tool einen Namen geben (z.B. 4NT im Projektverzeichnis)
  • Als Command gibt man %COMSPEC% an
  • Als Argument /k „%VS80COMNTOOLS%\..\..\VC\vcvarsall.bat“ x86
    Durch diese Eingabe werden alle Environment Variablen gesetzt, die z.B. die Tools von VS2005 benötigen oder eben auch der Compiler. Dadurch kann man sofort alle Tools aus VS direkt von der Befehlszeile öffnen.
  • Bei Initial directory gibt man jetzt noch den Makro $(ProjectDir) an

Die entsprechenden Makros und Environment Variablen garantieren, dass die entsprechenden Batchfiles und auch der korrekte Befehlszeileninterpreter gefunden wird. Bei mir eben 4NT und nicht CMD.EXE. Durch die Verwendung von %VS80COMNTOOLS% wird auch der entsprechende Batchfile gefunden, egal wie das Programmverzeichnis heißt.

Der Aufruf von vcvarsall.bat setzt PATH, INCLUDE und LIB Environment-Variablen. Damit kann man alle VS-Tools diekt aus der Befehlszeile nutzen.

Warum ich diese komplizierte Methode gewählt habe? Ich liebe einfach universelle Angaben die man auf jeden Rechner übernehmen kann, egal wo die entsprechenden Softwarekomponenten installiert sind.

VS-Tipps & Tricks: Gruppieren von Tastaturbefehlen

Als Entwickler hat man schon viele Tastaturkürzel im Kopf. Viele sind jedoch nicht vordefiniert, also denkt man sich was eigenes aus. Dennoch gibt es Befehle, die man nicht so häufig benutzt und gerne auf der Tastatur ausführen möchte. Man vergisst dennoch, das Kürzel oder sogar wo man einfach den Menübefehl findet.

Oft ging es mir so, mit den Befehlen aus Visual Source Safe. Irgendwann habe ich für alle VSS-Befehle dann mal Kürzel angelegt. Aber keine 1 Tastenbefehle, sondern eine Sequenz.
Alle VSS-Befehle fangen bei mir mit Alt+V an. Dann folgt simpel und einfach der Befehl den ich VSS geben möchte:

  • Alt+V, O – Check out
  • Alt+V, I – Check in
  • Alt+V, H – Show history
  • Alt+V, E – Start VSS Explorer
  • Alt+V, U – Undo Checkout
  • Alt+V, G – Get lastest version
  • Alt+V, P – Show properties

So habe ich mit bestimmten Tastatursequenzen mir bestimmte Aufgabengruppen geschaffen, die einfach mit der ersten Sequenz die Gruppe definiert und mit der zweiten Taste, sinnvoll und einfach den Befehl auslöst. Die Lernphase ist extrem niedrig und man behält hunderte von Sequenzen im Kopf, weil man einfach weiß was man machen will.

Gleiches lohnt sich mit vielen netten Features aus Visual Assist (bei mir Alt+A) Gruppe. Oder auch für den Dialogeditor, dem man einfach bestehende Befehle einfachere und zusätzliche Tastaturkürzel gibt. Oder man erzeugt sich eine Gruppe von erweiterten Navigationsbefehlen (nächste Block, nächste Funktion etc.). Die Outlining Befehle sind ja schon unter Strg+M zusammengefasst, allerdings finde ich hier die Assoziationen für den zweiten Buchstaben nicht ganz so gut.
Es gibt noch viele wirklich gute Funktionen im Editor des Visual Studios, leider sind viele unerreichbar, weil die Tastaturbefehle abstrus sind oder gar nicht definiert sind. Es lohnt sich hier selbst auf Erkundungstour zu gehen.

VS-Tipps & Tricks: Schnelles Navigieren im Class View

Wenn man in Dialogen und Klassen über den Class View Variablen oder Funktionen hinzufügen will, dann ist dies oft mit mühsamen Rollen und suchen der Funktionen und Klassen verbunden.
Ganz besonders wenn man auch noch viele Namespaces verwendet.

Es gibt eine Funktion, der normalerweise kein Hotkey zugeordnet ist: View.SynchronizeClassView.

Der Name deutet es ja schon an, der Class View wird mit dem aktuellen Kontext synchronisiert.  Am Besten man weißt dieser Funktionen eine guten Hotkey zu und probiert die Funktion aus. Ich verwende hier Alt+A, S.

Diese Funktion zeigt den Class View an (auch wenn diese Tab-Seite aktuelle nicht aktiv ist), weiterhin wird sofort die aktuelle Klasse oder Funktion im Class View angezeigt, in dessen Kontext man sich aktuell befindet. Längeres Navigieren erübrigt sich.

VS-Tipps & Tricks: Direkte Befehlseingabe über Schnellsuche

Das Command-Window kennt man wahrscheinlich schon (Strg+Alt+A).
Man kann hier direkt über die Tastatur und mit Hilfe von Intellisense, das gesamte Visual Studio steuern. Das ist aber nicht unbedingt unbekannt wird aber selten benutzt.

Interessant ist, dass man sehr schnell ohne ein weiteres Fenster diese Befehlseingabe auch so benutzen kann. Über das Schnellsuch-Fenster.

Drückt man Strg+D, landet man in dem bekannten Eingabefenster im Toolbar in dem man nun nach etwas suchen kann. Aber dieses Fenster kann mehr. Gibt man nun das Größer-als-Zeichen > ein, dann kann man nun auch hier direkt einen Befehl mit der Zusatzhilfe von Intellisense ausführen.

Die Tastenkombination Strg+D > op Eingabetaste öffnet den Datei-Öffnen Dialog.
Mit der Tastenkombination Strg+D > va . opt kommt man an den VA Options Dialog.

VS-Tipps & Tricks: Kontextmenü auf Karteireitern

In der Newsgroup microsoft.public.de.vc kam die Frage auf, ob es eine Seite mit speziellen Tipps und Tricks gibt für Visual Studio. Meines Wissens nach gibt es so etwas leider nicht. Deshalb habe ich mir vorgenommen demnächst einzelne Tipps & Tricks hier zu veröffentlichen.
Eine komplette Sammlung und Übersicht ist dann über diese Seite oder über die Kategorie-Auswahl in meinem Blog möglich.

Wer etwas beizusteuern hat, kann gerne eine Email an mich senden.

Aber nun zum ersten Tipp: Kontextmenü auf Karteireitern

Es lohnt sich einen Blick auf das Kontext-Menü zu öffnen, das sich öffnet, wenn man mit der rechten Maus auf den Karteireiter einer offenen Datei im Visual Studio klickt. Dort gibt es drei äußerst nette Helferlein, die man leicht übersieht:

  1. Close All But This
    Schließt alle Fenster bis auf das aktive. Besonders gut noch einer Debugging Session um wieder etwas Übersicht zu bekommen.
  2. Copy Full Path
    Kopiert den kompletten Pfad der Datei auf die Zwischenablage.
  3. Open Containing Folder (Mein Favorit) ❗
    Netter und schneller kann man den entsprechenden Projekt Ordner im Explorer nicht öffnen. Besonders, wenn man seine Projektdateien in Unterverzeichnisse gegliedert hat kommt man hier ganz schnell an das entsprechende Explorer-Fenster.

VS Tipps & Tricks: Blockmodus aus VC6 in VS.NET 2003 und VS 2005

Viele haben den Blockmodus (Box-Mode) in VC6 über die Tastatur benutzt. Diesen Modus erreichte man über die Tasten Strg+Umschalt+F8. Damit war es einfach Spalten und rechteckige Textbereiche zu markieren und zu bearbeiten.
Diese Operation konnte auch durch das Festhalten der Alt-Taste ausgelöst werden, wenn man mit der Maus den Cursor über einen Bereich zog.

Spätere Visual Studio Versionen haben dafür keinen direkten Hotkey mehr zwischen Box-Mode und Stream-Mode zu wechseln. Das Ganze wurde vereinheitlicht.
Ein Block wird markiert indem die Umschalt+Alt-Taste festgehalten werden und entsprechende Navigationstasten bewegt werden.
Eigentlich logisch und sogar dokumentiert, aber wer liest denn schon die Doku! 😛

http://msdn2.microsoft.com/en-us/library/aa301672(vs.71).aspx
http://msdn2.microsoft.com/en-us/library/729s2dhh(VS.80).aspx