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!