- ArchitectNow

advertisement
Visual Studio.NET 2008/2010
Tips, Tricks, and Toys
Presenter:
Kevin Grossnicklaus
November 3rd, 2009
Agenda
•
•
•
•
•
•
•
•
•
•
•
•
•
Introductions
Expectations
General Tips
Code Editor Tricks
Searching
Layout and Navigation
Advanced Design-Time Tips
Debugging Tips
Visual Studio.NET 2010
VS.NET Plug-Ins
External Development Tools
Additional Resources
Questions?
Introductions
• Kevin Grossnicklaus
– ArchitectNow- www.ArchitectNow.net (2009-Present)
• President
– Washington University - CAIT Program (2003-Present)
• Instructor
– SSE - www.SSEinc.com (1999-2009)
• Chief Architect
• Software Development Practice Leader
• Email: kvgros@architectnow.net
• Twitter: twitter.com/kvgros
• Blog: www.GeeksWithBlogs.com/kgrossnicklaus
Special Thanks
• Washington University and CAIT
• Cheryl Roth and the Roth Group
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?
• “Mama I’m Going Fast”
– Ricky Bobby
GENERAL TIPS
Managing Shortcuts
• Keyboard vs. Mouse
• Verify your current environment settings
– This talk assumes “General Development”
• Manage keyboard shortcuts here:
– Tools->Options->Environment->Keyboard
• All settings (including shortcuts) can be imported
and/or exported from:
– Tools->Import and Export Settings
Keyboard Shortcuts
• Standard Shortcuts:
– Ctl-K
– Ctl-Shift-O
• “Chords” = Two character shortcuts
– Written as:
• Ctl-K,D or Ctl-K, Ctl-D
Shortcut Reference Posters
• C# 2008
– http://www.microsoft.com/downloads/details.asp
x?familyid=E5F902A8-5BB5-4CC6-907E472809749973&displaylang=en
• Visual Basic.NET 2008
– http://www.microsoft.com/downloads/details.asp
x?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)
– 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
– 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
– Pastes the last item cut or copied into the editor at
the current cursor location
• Clipboard “Ring” = Ctl-Shift-V
– 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
– Left click to cut/paste
– Right click to be prompted to Move or Copy
• Code can be dragged onto the Toolbox dockwindow in the “General” section and then
dragged back onto other editors
– 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:
– 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:
– 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?
– 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:
– 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:
– Ctl-K,C = Comment Block
– Ctl-K,U = Uncomment Block
• XML Comments
• Task List Comments
– //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
– Enter to select the first item
• Resolve Context Menu
Code Snippets
• Ctl-K,X to bring up Code Snippet menu
– 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
– Ctl-I
– Start typing
– Ctl-I again to jump to next occurrence
• Current Word Search
– Ctl-F3 to search for the currently selected word
– Ctl-Shift-F3 to search for the current word
looking backwards
• Quick Find
– Ctl-F to bring up Quick Find with current word as
the default
Searching - 2
• Quick Replace
– Ctl-H brings up the Quick Replace window with
the current word as the default
• Find Symbol
– 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
– Ctl-Shift-F opens the Find in File dialog
• Replace in Files
– 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
– Close All But This
– Copy Full Path
– Open Containing Folder
• Tab Groups
– Horizontal or Vertical
• Windows Menu
Document Navigation
• Ctl-Tab to display the IDE navigator
– Ctl-Tab again to scroll through open documents
– Ctl-Shift-Tab to scroll in reverse
– Arrow keys or mouse to select a document or dockwindow
• 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”
–
–
–
–
–
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:
– View
– View->Other Windows
– Debug->Windows
Window Layouts
• Four Layouts:
– 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
– “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
– 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?
– 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.
– 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:
– Class View tool window
– Class Diagram designer
• Right-click on a class in either of the above and select
either:
– 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
– 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
– Location
– Condition
– Hit Count
– Filter
– When Hit
Next Statement Manipulation
• Yellow arrow = “NEXT” statement to execute
• Can be dragged to new location
– 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
– 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”
– This will break even when the exception is caught
by a try/catch block
Variables Windows
• They Are:
– Locals (Ctl-Alt-V,L)
– Autos (Ctl-Alt-V,A)
– Watch (Ctl-Alt-W,1-4)
– Quick Watch (Ctl-Alt-Q)
• All have similar functionality
– 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
– Click to open visualizer
• Notable visualizers:
–
–
–
–
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
– 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:
– Edit your project properties and, under the Debug tab,
check the “Enable Unmanaged Code Debugging”
– Open the Immediate Window and enter:
• .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
– What does this mean?
– Does this mean .NET is open source?
Debugging into the BCL
• How can I hook this up?
–
–
–
–
Options->Debugging->General
UNCHECK “Enable Just My Code”
CHECK “Enable Source Server Support”
Go to Options->Debugging->Symbols and add
• http://referencesource.microsoft.com/symbols
– Select an offline cache location
– CHECK “Search Above Locations Only When Symbols are
Loaded manually”
• Loading Symbols
– From the Modules window or the Call Stack, right click on a
BCL DLL and select “Load Symbols”
VISUAL STUDIO.NET 2010
VS.NET 2010
•
•
•
•
October 2009: Beta 2 Released
March 22nd, 2010: RTM
VS.NET 2010 = .NET 4.0 Framework
Fully re-written shell
– WPF UI
– Managed Extension Framework (MEF)
– 3rd Party Controls (i.e. Actipro Editor)
VS.NET 2010 Teaser Tips
•
•
•
•
•
Call Hierarchy
F# Interactive
Data Tips
IntelliTrace
Extension Manager
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
– KaXaml
– XamlCruncher
•
•
•
•
•
XmlNotePad
LinqPad
Reflector
Process Monitor
Graphics Tools
– Paint.NET
– Gimp
• Web Development Tools
– FireBug (for FireFox)
– Web Dev Helper (for IE)
ADDITIONAL RESOURCES
Visual Studio Add-In URLS
•
VSBuildStatus
•
XAML Power Toys
–
–
•
http://www.codeplex.com/SourceCodeOutliner
Snippet Designer
–
•
http://karlshifflett.wordpress.com/xaml-power-toys/
Source Code Outliner
–
•
http://visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=2a2293b4-1808-44aa-b030-661f6803d8a1
http://www.codeplex.com/SnippetDesigner
StyleCop
–
http://code.msdn.microsoft.com/sourceanalysis
•
VS.NET 2008 Power Commands
•
Ghost Doc
–
–
•
http://www.codeplex.com/ora
CodeProject Browser
–
•
http://microsoftdev.blogspot.com/2008/05/rock-scroll-visual-studio-plugin.html
Ora
–
•
http://www.roland-weigelt.de/ghostdoc/
RockScroll
–
•
http://code.msdn.microsoft.com/PowerCommands
http://www.codeproject.com/KB/macros/cpbrowser.aspx
CodeRush Xpress
–
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
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
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
twitter/kvgros
www.geekswithblogs.com
/kgrossnicklaus
Thank you for coming!
Download