- ArchitectNow
Download
Report
Transcript - ArchitectNow
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: [email protected]
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?
[email protected]
Conclusion
Thank you for coming!