- ArchitectNow

advertisement
Visual Studio.NET: Tips, Tricks, & Toys
by Kevin Grossnicklaus
ArchitectNow
Agenda











Introduction
General Tips
Code Editor Tricks
Searching
Layout and Navigation
Advanced Design-Time Tips
Debugging Tips
VS.NET Plug-Ins
External Development Tools
Additional Resources
Questions?
Introduction

Kevin Grossnicklaus
o
ArchitectNow- www.ArchitectNow.net (2009-Present)
•
o
Washington University - CAIT Program (2003-Present)
•
o
Instructor
SSE - www.SSEinc.com (1999-2009)
•
•

President
Chief Architect
Software Development Practice Leader
Email: kvgros@architectnow.net
Expectations




What are we going to cover?
Why is this something I should be aware of?
Who can use this stuff?
How detailed are we going to get?
GENERAL TIPS
Managing Shortcuts

Keyboard vs. Mouse

Verify your current environment settings
o

Manage keyboard shortcuts here:
o

This talk assumes “General Development”
Tools->Options->Environment->Keyboard
All settings (including shortcuts) can be imported and/or exported from:
o
Tools->Import and Export Settings
Keyboard Shortcuts

Standard Shortcuts:
o
o

Ctl-K
Ctl-Shift-O
“Chords” = Two character shortcuts
o
Written as:
•
Ctl-K,D or Ctl-K, Ctl-D
Shortcut Reference Posters

C# 2008
o

http://www.microsoft.com/downloads/details.aspx?familyid=E5F902A8-5BB5-4CC6-907E472809749973&displaylang=en
Visual Basic.NET 2008
o
http://www.microsoft.com/downloads/details.aspx?familyid=255b8cf1-f6bd-4b55-bb42dd1a69315833&displaylang=en
Top Level Shortcuts






Ctl-Shift-N = New Project
Alt-Shift-N = New Website
Ctl-Shift-O = Open Project
Alt-Shift-O = Open Website
Ctl-Shift-A = Add New Item
Alt-Shift-A = Add Existing Item
CODE EDITOR
Cut/Copy/Paste

Copy or Cut = Ctl-C or Ctl-X (respectively)
o
o
If no selection, cuts or copies the current line to the clipboard
If there is a selection, cuts or copies the selection to the clipboard
•
•

Tools->Options->Text Editor->All Languages->General
Uncheck the “Apply Cut or Copy Commands to Blank Lines When There is No Selection”
option
Current Line
o
o
Ctl-L to cut the current line to the clipboard (including EoL)
Ctl-Shift-L to delete the current line
Cut/Copy/Paste (Cont.)

Paste = Ctl-V
o

Pastes the last item cut or copied into the editor at the current cursor location
Clipboard “Ring” = Ctl-Shift-V
o
o
Cycles through the previous 20 items cut to the clipboard and pastes them at the current cursor
location
Accidentally cut or copy something you didn’t mean to?
•
Cycle through pasting until you get to the item you overwrote
Misc Selection/Insertion Commands





Ctl-Enter to insert a blank line above current line
Ctl-Shift-Enter to insert a blank line below current line
Ctl-W to select current word
Ctl-Delete to delete next word
Ctl-Backspace to delete previous word
Drag/Drop Code

Selections of code can be dragged around a code file or to different files
o
o

Left click to cut/paste
Right click to be prompted to Move or Copy
Code can be dragged onto the Toolbox dock-window in the “General” section and then
dragged back onto other editors
o
o
These can be renamed to be more readable
This is a handy way to reuse sections of code
Weird Editor Shortcuts





Ctl-T to transpose a character
Ctl-Shift-T to transpose a word
Alt-Shift-T to transpose a line
Ctl-U to make current selection or character lowercase
Ctl-Shift-U to make current selection or character uppercase
Undo/Redo

Ctl-Z to Undo
Ctl-Y to Redo

Use the dropdowns for more granular control and information

Scrolling


Use the scroll bars or mouse wheel
Press mouse wheel to allow for 4-way navigation
“Go-Back” Markers and Navigation

What is a “Go-Back” marker?
Ctl-Minus to navigate backwards
Ctl-Shift-Minus to navigate forwards

Optionally use the toolbar buttons and dropdown boxes for more info


Navigation Bar





What is the navigation bar?
Ctl-F2 to select the navigation bar
Tab or Shift-Tab to switch between combo boxes once selected
Arrow keys to navigate down and enter to select
To enable/disable per language:
o
o
Tools->Options->Text Editor->All languages (or specific language)->General
Set the “Navigation Bar” option
Splitting Editor Windows




Window->Split to split
Window->Remove Split to remove
Splitter can be resized via mouse
F6 to switch between split panes
Line Numbers

Enable line numbers here:
o
o
Tools->Options->Text Editor->All languages (or specific language)->General
Check “Line Numbers”
Track Changes

Tools->Options->Text Editor->General


Check “Track Changes”
What does this do?

Yellow – Lines were edited since last save.
Green – Lines were edited prior to last save.

Yellow becomes Green after one save, close and re-open a file and Green is gone

Code Selection




Click and drag to select code via the common “stream” mode
Hold Alt-Shift and click and drag to select in “box” mode
Shift-Arrow Keys to manually select code in “stream” mode
Alt-Shift-Arrow Keys to manually select in “box” mode
Formatting


What does code formatting do?
Where can I adjust the settings?
o


Tools->Options->Text Editor->(Language)->Formatting
Ctl-K,D to format the current document
Ctl-K,F to format the current selection
Outlining



Ctl-M,M to toggle outlining around cursor
Ctl-M,L to toggle all outlining in current file
Ctl-M,P to turn off outlining

Edit->Outlining->Start Automatic Outlining to turn back on
Ctl-M,O to collapse to definitions

Selecting a collapsed definition allows you to cut and paste it as a whole

Remove Unused Usings

Right click in editor and select:
o
Organize Usings->Remove Unused Usings
Bookmarks

Ctl-K,K to toggle bookmarks on current line
Ctl-K,N to go to the next bookmark
Ctl-K,P to go to the previous bookmark
Ctl-K,L to clear all bookmarks
Ctl-K,W to view the bookmarks window

Organizing Bookmarks




Commenting

Handy Shortcuts:
o
o


Ctl-K,C = Comment Block
Ctl-K,U = Uncomment Block
XML Comments
Task List Comments
o
o
o
//TODO
//HACK
//UNDONE
Intellisense


Ctl-J to invoke statement completion (i.e. bring up Intellisense)
Ctl-Space or Alt-Right Arrow for statement completion
Smart-Tags

Ctl-Period to drop down a Smart-Tag menu
o

Enter to select the first item
Resolve Context Menu
Code Snippets

Ctl-K,X to bring up Code Snippet menu
o
o



Type-ahead supported
Or enter the snippet shortcut keyword and press Tab-Tab
Ctl-K,S to insert a code snippet around a selected block of code
Tab and Shift-Tab to switch between “tokens”
Ctl-K,B to bring up the Code Snippet Manager
Refactoring







Ctl-R,R to rename current item
Ctl-R,M to extract the currently selected code into a new method
Ctl-R,E to encapsulate field into a property
Ctl-R,I to extract interface from current class
Ctl-R,P to promote selected local variable to a parameter
Ctl-R,V to remove parameters
Ctl-R,O to reorder parameters
SEARCHING
Searching - 1

Incremental Search
o
Ctl-I
o
Start typing
Ctl-I again to jump to next occurrence
o

Current Word Search
o
o

Ctl-F3 to search for the currently selected word
Ctl-Shift-F3 to search for the current word looking backwards
Quick Find
o
Ctl-F to bring up Quick Find with current word as the default
Searching - 2

Quick Replace
o

Ctl-H brings up the Quick Replace window with the current word as the default
Find Symbol
o
o
Alt-F12 brings up the Find Symbol dialog
Shift-Alt-F12 searches for the current word using the Find Symbol functionality but skips the UI
Searching - 3

Find in Files
o

Replace in Files
o

Ctl-Shift-F opens the Find in File dialog
Ctl-Shift-H opens the Replace in Files dialog
Find in Files options
LAYOUT AND NAVIGATION
Document Windows

Document Windows = Tabbed Documents
Ctl-Alt-Down Arrow to drop down file tab channel

Tab Context Menu

o
o
o

Tab Groups
o

Close All But This
Copy Full Path
Open Containing Folder
Horizontal or Vertical
Windows Menu
Document Navigation

Ctl-Tab to display the IDE navigator
o
Ctl-Tab again to scroll through open documents
Ctl-Shift-Tab to scroll in reverse
o
Arrow keys or mouse to select a document or dock-window
o


Ctl-F6 and Ctl-Shift-F6 to jump between currently open documents without using the
IDE navigator (forwards and backwards)
Ctl-F4 to close the current document
Dock/Tool Windows


Docking Targets
Five “States”
o
o
o
o
o


Dockable
Floating
Tabbed
Hide
Auto-Hide
Alt-F7 and Alt-Shift-F7 to scroll (forwards or backwards) through all opened tool
windows using the IDE navigator
Alt-F6 and Alt-Shift-F6 to scroll (forwards or backwards) through all opened tool
windows without the navigator
Dock/Tool Windows (Cont.)

Tool windows that are hidden can be shown via their shortcut key or most are found under
one of the following menu locations:
o
o
o
View
View->Other Windows
Debug->Windows
Window Layouts

Four Layouts:
o
o
o
o

Design View
Full Screen
Debugging View
File View
Shift-Alt-Enter to toggle between Full Screen mode and Design View
Toolbars




Drag and drop customization
Visible based on current context
Right click to display any toolbar at any time
Customization dialog
o
o
“Show Shortcut Keys in Screen Tips”
Full customization of all toolbars while this dialog is visible
Context Menu Customization

Complete editing of any context menus
•
•
•
Tools->Customize
Select Toolbars tab
Check “Context Menus”
ADVANCED DESIGN TIME TIPS
Output Window

Right click to disable unnecessary messages
Command Window


Ctl-Alt-A to open the command window
Enter a > to run any VS command from the command prompt
o
o
Full Intellisense for commands, arguments, and even file paths
Command aliasing
•
•
? = Debug.Print
Enter “alias” by itself to see current aliases
Task Window



Custom Tasks
Task Shortcuts
Comment Tasks
External Tools

How to add external tools?
o
o
Redirecting console output to Output Window
Passing arguments
Find Combo Box

Ctl-/ to open the Find Combo Box with a “>” entered for you

Once in the Find Combo Box enter a “>” and you can run any VS command with the same
Intellisense as the Output Window
Enter a function name in the Find Combo Box and press F9 and a breakpoint will be set on
that function

Code Definition Window


Ctl-\,D to show the Code Definition Window
This window is a read-only source view of any symbol currently selected in the live editor.
o
o
Code can be copied from this window
Breakpoints can be set
Object Test Bench



Opened via View->Other Windows->Object Test Bench
Instantiate new instances of classes or call static methods to do quick testing (without
writing test code)
Can also be reached via:
o
o

Class View tool window
Class Diagram designer
Right-click on a class in either of the above and select either:
o
o
Create Instance
Invoke Static Method
DEBUGGING
Common Shortcuts





F5 to start debugging
Ctl-F5 to start without debugging
F11 to step into the current line
F10 to step over the current line
Shift-F5 to stop debugging
Breakpoints

F9 to toggle a breakpoint
o


Or, simply click in the left border of the code editor
Ctl-Shift-F9 to delete all breakpoints
Ctl-B to show Break at Function dialog
Breakpoints - Advanced

Breakpoint Context Menu
o
o
o
o
o
Location
Condition
Hit Count
Filter
When Hit
Next Statement Manipulation


Yellow arrow = “NEXT” statement to execute
Can be dragged to new location
o
o
Within Limits
Be careful
Debugging Threads

Ctl-Alt-H brings up the Threads tool window

At breakpoints all threads break together
Threads can be frozen/thawed from the Threads tool window

o

This keeps them paused when execution continues
Threads toolbar also exposes functionality
Break On All Exceptions

Ctl-Alt-E to bring up Exceptions dialog

It is common to break when a CLR exception is “thrown”
o
This will break even when the exception is caught by a try/catch block
Variables Windows

They Are:
o
o
o
o

All have similar functionality
o

Locals (Ctl-Alt-V,L)
Autos (Ctl-Alt-V,A)
Watch (Ctl-Alt-W,1-4)
Quick Watch (Ctl-Alt-Q)
All display values of variables and allow for in-place editing
Provides access to debugging visualizers
Runtime Variable Tooltips


Provides ability to view all of an objects properties and manipulate the values directly in the
tooltip
Provides access to debugging visualizers
Debugging Visualizers



New to VS.NET 2005+
Special user interfaces used to view the values of specific data types in variable windows
or runtime tooltips
Noted by the magnifying glass icon near the value
o

Click to open visualizer
Notable visualizers:
o
o
o
o
Datasets
Test
XML
HTML
Immediate Window

Ctl-Alt-I to bring up the Immediate Window

The immediate window can be used to execute statements and evaluate expressions in the
context of the current statement
o
o


Access to any variable in scope is granted
Can assign values to variables, read values, execute methods, etc
Use the “>” character to allow entry and use of any VS commands (as in the Command
window)
Command window has much of the same functionality
Son of Strike (SoS)


SoS is a debugger extension that is loaded with VS.NET and available from within the IDE
from the Immediate Window
To load SoS:
o
o
Edit your project properties and, under the Debug tab, check the “Enable Unmanaged Code
Debugging”
Open the Immediate Window and enter:
•
o
.load sos
For help, enter:
•
!help
Debugging The BCL

Microsoft has made many of the debug symbols for the Base Class Libraries available for
public use
o
o
What does this mean?
Does this mean .NET is open source?
Debugging into the BCL

How can I hook this up?
o
o
o
o
Options->Debugging->General
UNCHECK “Enable Just My Code”
CHECK “Enable Source Server Support”
Go to Options->Debugging->Symbols and add
•
o
o

http://referencesource.microsoft.com/symbols
Select an offline cache location
CHECK “Search Above Locations Only When Symbols are Loaded manually”
Loading Symbols
o
From the Modules window or the Call Stack, right click on a BCL DLL and select “Load Symbols”
VS.NET PLUG-INS
Add-In Demonstrations







GhostDoc
Source Code Outliner
VS.NET 2008 Power Commands
Snippet Designer
RockScroll
VsBuildStatus
CodeProject Browser
EXTERNAL TOOLS
External Tools Demo



Launchy
SharpDevelop
XAML Tools
o
o





XmlNotePad
LinqPad
Reflector
Process Monitor
Graphics Tools
o
o

KaXaml
XamlCruncher
Paint.NET
Gimp
Web Development Tools
o
o
FireBug (for FireFox)
Web Dev Helper (for IE)
ADDITIONAL RESOURCES
Visual Studio Add-In URLS

VSBuildStatus
o
http://visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=2a2293b4-1808-44aa-b030-661f6803d8a1

XAML Power Toys

Source Code Outliner
o
o

http://karlshifflett.wordpress.com/xaml-power-toys/
http://www.codeplex.com/SourceCodeOutliner
Snippet Designer
o
http://www.codeplex.com/SnippetDesigner

StyleCop

VS.NET 2008 Power Commands
o
o
http://code.msdn.microsoft.com/sourceanalysis
http://code.msdn.microsoft.com/PowerCommands

Ghost Doc

RockScroll
o
o

http://www.roland-weigelt.de/ghostdoc/
http://microsoftdev.blogspot.com/2008/05/rock-scroll-visual-studio-plugin.html
Ora
o
http://www.codeplex.com/ora

CodeProject Browser

CodeRush Xpress
o
o
http://www.codeproject.com/KB/macros/cpbrowser.aspx
http://www.devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/
External Tools URLs

Launchy

Delicious

FxCop

Kaxaml

XamlPadX

LinqPad

XamlCruncher

SharpDevelop

XmlNotepad

Reflector

Paint.NET

Process Monitor

ZoomIt

Web Dev Helper

FireBug
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
http://www.launchy.net/
http://delicious.com/
http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=553
http://www.kaxaml.com/
http://blogs.msdn.com/llobo/archive/2008/08/25/xamlpadx-4-0.aspx
http://www.linqpad.net/
http://www.charlespetzold.com/blog/2007/07/100411.html
http://www.icsharpcode.net/OpenSource/SD/
http://www.microsoft.com/downloads/details.aspx?familyid=72d6aa49-787d-4118-ba5f-4f30fe913628&displaylang=en
http://www.red-gate.com/products/reflector/
http://www.paint.net/
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx
http://projects.nikhilk.net/WebDevHelper
http://getfirebug.com/
Questions?
kvgros@architectnow.net
Conclusion
Thank you for coming!
Download