182

Visual Studio is such a massively big product that even after years of working with it I sometimes stumble upon a new/better way to do things or things I didn't even know were possible.

For instance-

  • Crtl + R, Ctrl + W to show white spaces. Essential for editing Python build scripts.

  • Under "HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\Text Editor" Create a String called Guides with the value "RGB(255,0,0), 80" to have a red line at column 80 in the text editor.

What other hidden features have you stumbled upon?

Community
  • 1
  • 1
shoosh
  • 76,898
  • 55
  • 205
  • 325

100 Answers100

123

Make a selection with ALT pressed - selects a square of text instead of whole lines.

shoosh
  • 76,898
  • 55
  • 205
  • 325
  • Not sure about the difference but I've always used Ctrl+Alt. – Craig Sep 24 '08 at 19:30
  • 9
    Ctrl-Alt will select whole words. Alt will change the size of the selection area by one character at a time. – firedfly Oct 15 '08 at 13:47
  • It looks as if they "fixed" (or broke) the paste of a selected block like this, however. Used to be, you could paste code on top of other code, now it appears to always paste new lines. I used the crap out of this for building CTORS, or = operators with lots of members to assign. – LarryF Dec 11 '08 at 22:50
  • Oh my gosh!! I've wanted this forever, but I didn't think VS.Net would ever have it! I remember it from the old WordStar days, believe it or not! – Charlie Flowers Mar 27 '09 at 05:29
  • at first I thought "when will I ever use this", and now I use it almost every day for copy pasting some code to an email, messenger window, stackoverflow, .. – Thomas Stock May 27 '09 at 22:59
  • 4
    This works in MS Word and OO Writer as well. I've used it a lot. – Bård Aug 27 '09 at 07:17
  • 3
    This (called "block select") also works with the keyboard- hold alt+shift then use the arrow keys. – arolson101 Oct 16 '09 at 16:42
  • 1
    In addition, if you select an empty horizontal column this way, anything you type will get duplicated on every line, behaving like a huge cursor :) – Sedat Kapanoglu May 20 '10 at 13:32
  • Your mileage may vary if you copy-paste the rectangular selection. – kibibu Jun 04 '10 at 02:57
  • 1
    I saw this being *sold* as a feature for VS 2010, but I just tried it in VS 2008 and it worked. I'm flabbergasted. this is amazingly usefull! – DaveDev Sep 05 '10 at 22:58
  • alt + W: comment; alt + e: uncomment – Elaine Jun 16 '11 at 07:13
95

Tracepoints!

Put a breakpoint on a line of code. Bring up the Breakpoints Window and right click on the new breakpoint. Select 'When Hit...'. By ticking the 'Print a message' check box Visual Studio will print out a message to the Debug Output every time the line of code is executed, rather than (or as well as) breaking on it. You can also get it to execute a macro as it passes the line.

Charles Anderson
  • 19,321
  • 13
  • 57
  • 73
  • 1
    I know I'm late to the game, but that's a great feature I never knew about! – Jerry Aug 25 '09 at 19:37
  • 7
    For extra points you can make a local variable asignment in the when hit button. { localVariable = 1.0f } or increase values by { staticVariable += 0.1f } – Charles Beattie May 10 '10 at 14:28
91

You can drag code to the ToolBox. Try it!

jfs
  • 16,758
  • 13
  • 62
  • 88
79

Click an identifier (class name, variable, etc) then hit F12 for "Go To Definition". I'm always amazed how many people I watch code use the slower right-click -> "Go To Definition" method.

EDIT: Then you can use Ctrl+- to jump back to where you were.

Igor Klimer
  • 15,321
  • 3
  • 47
  • 57
Craig
  • 4,323
  • 2
  • 29
  • 32
57

CTRL+SHIFT+V will cycle through your clipboard, Visual Studio keeps a history of copies.

sontek
  • 12,111
  • 12
  • 49
  • 61
  • this can be found in edit.cycleclipboardring in keyboard mappings (in visual c++ this is Ctrl-Shift-Insert, not Ctrl-Shift-V) – default Jun 20 '10 at 12:20
52

Sara Ford covers lots of lovely tips: http://blogs.msdn.com/saraford/archive/tags/Visual+Studio+2008+Tip+of+the+Day/default.aspx

But some of my favourites are Code Snippets, Ctrl + . to add a using <Namespace> or generate a method stub. I can't live without that.

Check out a great list in the Visual Studio 2008 C# Keybinding poster: http://www.microsoft.com/downloadS/details.aspx?familyid=E5F902A8-5BB5-4CC6-907E-472809749973&displaylang=en

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Aaron Powell
  • 24,927
  • 18
  • 98
  • 150
  • 1
    Sara Ford is the goddess of Visual Studio. I couldn't recommend her enough. – Chris Charabaruk Sep 19 '08 at 08:27
  • Totally agree which I why I share her work. I'm really loving her current series which covers debugging – Aaron Powell Sep 20 '08 at 10:21
  • Sad that she quit doing the tip of the day, though it's been so long since she worked with the innards of VS that it's completely understandable that she needed to move on... – Knobloch Feb 12 '09 at 13:25
  • Thank you for mentioning CTRL+. I was searching for this one exactly. – Sorin Comanescu Aug 07 '09 at 10:56
  • I was always using CTRL+ALT+F10. Didn't know CTRL+. does the same thing - thanks. Much more comfortable. – Noam Gal Aug 12 '09 at 10:48
  • @Noam- I used to use CTRL + ALT + F10, only discovered CNTRL+. by reading the book Pro ASP.NET MVC. Much better with CNTRL+. – RichardOD Sep 22 '09 at 13:43
  • Ctrl + K + M is faster than Ctrl + . if you are sure that you wanted to generate a method. One of my favorite is Ctrl + K + S for surrounding code with various code blocks like if, try, region etc. – Raj Oct 30 '09 at 23:33
  • The 101 VS Tips in 55 Minutes is currently hosted here: http://saraford.net/2010/06/17/video-101-visual-studio-tips-in-55-minutes/ – JYelton Sep 06 '11 at 18:20
49
CTRL-K, CTRL-D

Reformat Document!
This is under the VB keybindings, not sure about C#

Mark Glorie
  • 3,733
  • 3
  • 28
  • 31
43

How many times do you debug an array in a quickwatch or a watch window and only have visual studio show you the first element? Add ",N" to the end of the definition to make studio show you the next N items as well. IE "this->m_myArray" becomes "this->m_array,5".

tenpn
  • 4,556
  • 5
  • 43
  • 63
41

Incremental search: While having a source document open hit (CTRL + I) and type the word you are searching for you can hit (CTRL + I) again to see words matching your input.

Marek
  • 10,307
  • 8
  • 70
  • 106
Leyu
  • 2,687
  • 2
  • 23
  • 27
37

You can use the following codes in the watch window.

@err - display last error
@err,hr - display last error as an HRESULT
@exception - display current exception
Ferruccio
  • 98,941
  • 38
  • 226
  • 299
35
  • Ctrl-K, Ctrl-C to comment a block of text with // at the start
  • Ctrl-K, Ctrl-U to uncomment a block of text with // at the start

Can't live without it! :)

Thomas Bratt
  • 48,038
  • 36
  • 121
  • 139
  • Also true in VB.NET, except with ' rather than // – ChrisA Feb 08 '09 at 09:10
  • Also true in SQL Server Management Studio, except using the SQL comment escape sequence of '--' – Thomas Bratt Feb 09 '09 at 17:11
  • 3
    I always wished you could toggle comments? Why would you want to "double comment" something? Surely pressing it again should un-comment... – Dan Diplo Aug 05 '09 at 22:22
  • 16
    Sometimes you want to comment the entire function, and some lines inside are already commented (i.e. they are proper comments). In such cases it's not obvious what to do if you have a toggle, so it's generally better to make the decision explicit. – Pavel Minaev Aug 13 '09 at 08:46
  • I wish there was an easy way to wrap a block of text in /* ... */ rather than prepending every line with //. I've started doing this by hand rather than lazily using Ctrl-E, Ctrl-C. Why? Because if you comment out a block of code, which someone else modifies, you get conflicts when you try to merge them (when using a DVCS). If you wrap blocks with C style comments however, then the commented out code gets modified automatically. Also in your revision control, you only see the first and last line of the block as modified, not every line of the block, which makes changesets easier to review. – Mark Booth Mar 24 '10 at 12:24
  • 1
    Note that if you start at the beginning of text rather then beginning of line you will get the /* */ instead of //. This is by the way my most used feature – default May 18 '10 at 18:39
  • for such a useful feature, it should be simpler than something tha requires 2 hands. – DaveDev Sep 05 '10 at 23:05
  • @DaveDev: You use 1 hand when you are programming? – default Sep 09 '10 at 01:13
  • @Michael, sometimes when I'm lonely. But otherwise I might be selecting a block of code with the mouse, and then I have to move my hand to the keyboard, and then back again to the mouse. It's not much of an overhead, but if you're doing it a lot it can get tedious – DaveDev Sep 09 '10 at 12:09
  • @DaveDev: lol :) right, I usually mark the code with shift-up/down.. So personally not that much hassle. But if you are selecting it with the mouse, it should be one click. Although, you can map it yourself to a one-hand-..click (How about, Ctrl -C[omment] ;)) – default Sep 09 '10 at 13:21
25

Stopping the debugger from stepping into trivial functions.

When you’re stepping through code in the debugger, you can spend a lot of time stepping in and out of functions you’re not particularly interested in, with names such as GetID(), or std::vector<>(), to pick a C++ example. You can use the registry to make the debugger ignore these.

For Visual Studio 2005, you have to go to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio \8.0\NativeDE\StepOver and add string values containing regular expressions for each function or set of functions you wish to exclude; e.g.

std::vector.*::.*
TextBox::GetID

You can also override these for individual exceptions. For instance, suppose you did want to step into the vector class’s destructor:

std::vector.*::\~.*=StepInto

You can find details for other versions of Visual Studio at http://blogs.msdn.com/andypennell/archive/2004/02/06/69004.aspx

Charles Anderson
  • 19,321
  • 13
  • 57
  • 73
23

Ctrl-F10: run to cursor during debugging. Took me ages to find this, and I use it all the time;

Ctrl-E, Ctrl-D: apply standard formatting (which you can define).

Joel in Gö
  • 7,460
  • 9
  • 47
  • 77
23

TAB key feature.

  1. If you know snippet key name, write and click double Tab. for example: Write

    foreach

and then click tab key twice to

foreach (object var in collection_to_loop)
{

}

2. If you write any event, write here

        Button btn = new Button();
        btn.Click +=         

and then click tab key twice to

private void Form1_Load(object sender, EventArgs e)
{
        Button btn = new Button();
        btn.Click += new EventHandler(btn_Click);     
}    
void btn_Click(object sender, EventArgs e)
{
        throw new Exception("The method or operation is not implemented.");
}

btn_Click function write automatically

  1. in XAML Editor, Write any event. for example:

MouseLeftButtonDown then click tab
MouseLeftButtonDown="" then click tab again MouseLeftButtonDown="Button_MouseLeftButtonDown" in the code section Button_MouseLeftButtonDown method created.

ebattulga
  • 10,774
  • 20
  • 78
  • 116
21

Sara Ford has this market cornered.

http://blogs.msdn.com/saraford/default.aspx

More Visual Studio tips and tricks than you can shake a stick at.

Some others:

  • The Visual Studio 2005 and 2008 3-month trial editions are fully-functional, and can be used indefinitely (forever) by setting the system clock back prior to opening VS. Then, when VS is opened, set the system clock forward again so your datetimes aren't screwed up.
  • But that's really piracy and I can't recommend it, especially when anybody with a .edu address can get a fully-functional Pro version of VS2008 through Microsoft Dreamspark.
  • You can use Visual Studio to open 3rd-party executables, and browse embedded resources (dialogs, string tables, images, etc) stored within.
  • Debugging visualizers are not exactly a "hidden" feature but they are somewhat neglected, and super-useful, since in addition to using the provided visualizers you can roll your own for specific data sets.
  • Debugger's "Set Instruction Pointer" or "Set Next Statement" command.
  • Conditional breakpoints (as KiwiBastard noted).
  • You can use Quickwatch etc. to evaluate not only the value of a variable, but runtime expressions around that variable.
  • 3
    If it's really piracy (which I agree with you about), then why would you even mention it? – Ryan Lundy Dec 03 '09 at 18:56
  • 1
    Kyralessa, because some people probably don't care. However, with the Express editions being free I doubt there is an actual reason nowadays to use a pirated VS version. – Joey Sep 09 '11 at 09:33
21

T4 (Text Template Transformation Toolkit). T4 is a code generator built right into Visual Studio

Shiju
  • 1,313
  • 2
  • 12
  • 14
17

Custom IntelliSense dropdown height, for example displaying 50 items instead of the default which is IMO ridiculously small (8).

(To do that, just resize the dropdown next time you see it, and Visual Studio will remember the size you selected next time it opens a dropdown.)

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Brann
  • 31,689
  • 32
  • 113
  • 162
16

Discovered today:

Ctrl + .

Brings up the context menu for refactoring (then one that's accessible via the underlined last letter of a class/method/property you've just renamed - mouse over for menu or "Ctrl" + ".")

Muxa
  • 5,563
  • 6
  • 46
  • 56
14

A lot of people don't know or use the debugger to it's fullest - I.E. just use it to stop code, but right click on the red circle and there are a lot more options such as break on condition, run code on break.

Also you can change variable values at runtime using the debugger which is a great feature - saves rerunning code to fix a silly logic error etc.

JamesSugrue
  • 14,891
  • 10
  • 61
  • 93
13

Line transpose, Shift-Alt-T
Swaps two line (current and next) and moves cursor to the next line. I'm lovin it. I've even written a macro which changed again position by one line, executed line transpose and changed line position again so it all looking like I swapping current line with previous (Reverse line transpose).

Word transpose, Shift-Ctrl-T

okutane
  • 13,754
  • 10
  • 59
  • 67
11

When developing C++, Ctrl-F7 compiles the current file only.

Sakin
  • 3,367
  • 3
  • 23
  • 27
11

To auto-sync current file with Solution Explorer. So don't have to look where the file lives in the project structure

Tools -> Options -> Projects and Solutions -> "Track Active Item in Solution Explorer"

Edit: If this gets too annoying for you then you can use Dan Vanderboom's macro to invoke this feature on demand through a keystroke.

(Note: Taken from the comment below by Jerry).

Sandeep Datta
  • 28,607
  • 15
  • 70
  • 90
user20804
  • 91
  • 2
  • 4
  • 3
    this gets annoying after a while. i wish there were a keyboard shortcut to do this on demand. – kenwarner Jul 28 '09 at 14:14
  • 2
    Here's a post on how to track on demand. http://dvanderboom.wordpress.com/2008/03/21/visual-studio-macro-track-item-in-solution-explorer-on-demand/ – Jerry Aug 25 '09 at 19:44
  • If you have lots of files open, it can kill VS (without warning) if you do things like 'Close all but this' (from PowerCommands, I think). – Benjol Sep 02 '09 at 06:39
  • Resharper makes the need for this redundant as you can do Shift+Alt+L to jump directly to the current file in the Solution Explorer; or Ctrl+Shift+N to keyword search for any file in the Solution. – cbp Jul 09 '10 at 08:24
11

Document Outline in the FormsDesigner (CTRL + ALT + T)

Fast control renaming, ordering and more!

Pondidum
  • 11,457
  • 8
  • 50
  • 69
9

I'm not sure if it's "hidden", but not many people know about it -- pseudoregisters. Comes very handy when debugging, I've @ERR, hr in my watch window all the time.

yrp
  • 4,565
  • 2
  • 24
  • 10
9

Ctrl-Minus, Ctrl-Plus, navigates back and forward where you've been recently (only open files, though).

Ilya Ryzhenkov
  • 11,782
  • 1
  • 40
  • 50
9

Here's something I learned (for C#):

You can move the cursor to the opening curly brace from the closing curly brace by pressing Control + ].

I learned this on an SO topic that's a dupe of this one:

“Hidden Secrets” of the Visual Studio .NET debugger?

Community
  • 1
  • 1
Jay Riggs
  • 53,046
  • 9
  • 139
  • 151
9

I don't use it often, but I do love:

ctrl-alt + mouse select

To select in a rectangular block, to 'block' boundaries.

As noted in comments,

alt + mouse select

Does just a plain rectangular block.

Noon Silk
  • 54,084
  • 6
  • 88
  • 105
8

CTRL + Shift + U -> Uppercase highlighted section. CTRL + U -> Lowercase the highlighted section Great for getting my SQL Statements looking just right when putting them into string queries.

Also useful for code you've found online where EVERYTHING IS IN CAPS.

Rob
  • 701
  • 3
  • 8
  • 21
  • 2
    Too bad they don't have a CamelCase CTRL+Shift option... :) That's probably my #1 refactor I do when I take over a project... Larry – LarryF Dec 15 '08 at 23:31
8

Middle Mouse Button Click on the editor tab closes the tab.

Kevin Driedger
  • 51,492
  • 15
  • 48
  • 55
  • 1
    I use this all the time when I'm coding because I'm looking up code and then closing it (the "X" for closing is rather far). – Kevin Driedger Nov 12 '09 at 15:18
8

To display any chunk of data as an n-byte "array", use the following syntax in Visual Studio's QuickWatch window:

variable, n

For example, to view a variable named foo as a 256-byte array, enter the following expression in the QuickWatch window:

foo, 256

This is particularly useful when viewing strings that aren't null-terminated or data that's only accessible via a pointer. You can use Visual Studio's Memory window to achieve a similar result, but using the QuickWatch window is often more convenient for a quick check.

Emerick Rogul
  • 6,706
  • 3
  • 32
  • 39
7

Ctrl + Delete deletes the whole word (forward)

Ctrl + Backspace deletes the whole word (backward)

The following is well known but am I wrong saying it hasn't been listed yet ?

Ctrl + Shift + Space inside the parentheses of a method call gives you the parameter info.

hoang
  • 1,887
  • 1
  • 24
  • 34
7

CTRL-D then type ">of " then file name. If the standard toolbar is up crtl-d put you in find combobox and there is now a dropdown with files in your solution that match the start of the filename you typed. Pick one and it will open it. This alternative to the open filedialog is awesome for big solutions with lots of directories.

Steve Steiner
  • 5,299
  • 4
  • 32
  • 43
6

Drag-drop text selections to the Watch window while in the debugger.

Mark Cidade
  • 98,437
  • 31
  • 224
  • 236
6

.NET debugger allows you to give objects identifiers, and to refer them via those identifiers later during the session. To do so, you right-click on the variable (or expression) referencing the object in Autos/Locals/Watch window, or in the tooltip, and select "Create Object ID". IDs are sequential integer numbers, starting from 1, and suffixed by "#" - e.g 1# will be the first ID you create.

After the ID is created, if the object is associated with a given ID, it is displayed in parentheses.

You can use 1# to reference the object by ID anywhere you can normally use expressions - in Watch window, in condition of a conditional breakpoint, and so on. It's most handy when you want to set a breakpoint on a method of some particular object only - if you can first track the object creation, or some other place where this particular object is referenced, you just create the ID for it, and then set a new breakpoint with condition such as this==1#.

Pavel Minaev
  • 99,783
  • 25
  • 219
  • 289
5

I accidentally found this one just now. When you are anywhere on a line and press Ctrl + Enter, it will insert a new line above the current line and move the cursor there.

Also, if you press Ctrl + Shift + Enter, it will insert a new line below the current line and move the cursor there (similar to End, Enter)

Nelson Rothermel
  • 9,436
  • 8
  • 62
  • 81
5

During debugging, Select an identifier or expressing and drag it to the watch window.
Beats having to write it from scratch :)

shoosh
  • 76,898
  • 55
  • 205
  • 325
4

Press the F8 key to cycle through search results. (Shift+F8 for reverse direction)

Hit F12 to go to definition of variable.

Shift + alt + arrow keys = Block select!

4
  • Ctrl-K, Ctrl-C to comment a block of text with // at the start
  • Ctrl-K, Ctrl-U to uncomment a block of text with // at the start

Can't live without it! :)

Thomas Bratt
  • 48,038
  • 36
  • 121
  • 139
4

In the watch window, you can view the current exception even if you have no variable to hold it by adding a watch on $exception

Pierre-Alain Vigeant
  • 22,635
  • 8
  • 65
  • 101
4
  • The memory windows, very useful if you're doing low level stuff.
  • Control + K , Control + F - Format selection - great for quickly making code neat
  • Regions, some love them, some hate them, most don't even know they exist
  • Changing variables in debug windows during execution
  • Tracepoints
  • Conditional break points
  • Hold down Alt and drag for 'rectangular' selection.
  • Control+B for a breakpoint, to break at function
  • Control+I for incremental search, F3 to iterate
Ali Parr
  • 4,737
  • 3
  • 31
  • 35
4

Ever want to look for a function in your current viewed file but there are too many member to browse? Need a filter? Then, the Navigate box is what you need. You activate it by Ctrl-, (comma).

Nam G VU
  • 33,193
  • 69
  • 233
  • 372
3

Shift+Alt+F10 brings up the built in refactoring menu. Great for adding method stubs from interfaces, and adding Using statements automatically for specific classes.

Dave Arkell
  • 3,920
  • 2
  • 22
  • 27
3

You can drag down the little gray box above the vertical scrollbar to split the window into two views of the same file, which can be scrolled independently - great if you're comparing two parts of the same file.

SLaks
  • 868,454
  • 176
  • 1,908
  • 1,964
  • This is awesome for web stuff, such as keeping css/javascript in the top portion and the HTML in the bottom. Also for rewriting a long method, you can keep the "old" version in one area for reference while you write the new one in the other pane. – goldenratio Aug 25 '10 at 00:17
  • 1
    i'd just use windiff or the likes –  Dec 05 '10 at 07:32
3

View, Other Windows, Object Test Bench

The object test bench can be used to execute code at design-time.

You can right-click on a type in Class View, click Create Instance, and select a constructor. You can then supply values for its parameters, if any, and the instance will show up in the Object Test Bench.

You can also call static methods by right-clicking a type and clicking Invoke Static Method.

In the Object Test Bench, you can right-click on an object to call methods, and you can hover over it and see its structure (like you can when debugging). You can also assign to and interact with these variables in the Immediate window, also at design time.

This feature can be useful when writing a library. Please note that to use this, your solution must be compile first.

SLaks
  • 868,454
  • 176
  • 1,908
  • 1,964
3

There is an article about this. It seems to be a lengthy collection.

Taptronic
  • 5,129
  • 9
  • 44
  • 59
3

Dynamic XSLT Intellisense

A very little known fact is that Visual Studio 2008 does support real XSLT intellisense - not a static XSLT schema-based one, but real dynamic intellisense enabling autocompletion of template names, modes, parameter/variable names, attribute set names, namespace prefixes etc.

For all versions of VS I like

Ctrl + Shift + V

for copying data in clipboard cycle.

rahul
  • 184,426
  • 49
  • 232
  • 263
3

I don't know how 'hidden' this is, but some newew people may not know about coniditonal breakpoints.

Set a breakpoint, then right click it, and choose Condition, then enter an expression like:

(b == 0)

And it will only fire when that is true. Very useful when trying to debug a certain stage of a loop.

Noon Silk
  • 54,084
  • 6
  • 88
  • 105
  • 3
    I think the general approach in these threads is to put one answer per comment, so people can rank them individually. I'm not getting any more points today via upvotes anyway, so it doesn't bother me either way :) – Noon Silk Aug 31 '09 at 04:59
3

The existence of the Resharper add-in. It makes working with Visual Stupidio less of a pain :)

It's not really a hidden feature, but worth mention nonetheless as it comes with tons of these tricks and hotkeys.

Bryan Menard
  • 13,234
  • 4
  • 31
  • 47
3

I'm surprised no one has mentioned this yet. I find the ability record and play back a series of actions very, very helpful sometimes. Like if I'm applying some repetitive action to a few lines in a text file.

For example

Ctrl+Shift+R (start recording macro)

perform a series of keystrokes

Ctrl+Shift+R (stop recording macro)

later....

Ctrl+Shift+P (play back keystrokes)

This approach is ideal for a short, one time manipulations. If it's something more involved or needed more than once, I'll write a script.

Matthew Sposato
  • 1,635
  • 1
  • 11
  • 13
  • I'd like to use your tip to delete a line quickly! Currently VS just provide hotkey to cut a line. Your tips is a quick way to add a temporary shortcut (i.e. Ctrl-Shift-P). – Nam G VU Jul 03 '10 at 09:44
  • I also use this tips to quickly open the Pending Changes pane. – Nam G VU Jul 07 '10 at 03:37
  • I use this all the time when cleaning out or formatting files. I use this and sometimes regex –  Dec 05 '10 at 07:38
3

Pseudovariables in the debugger: http://msdn.microsoft.com/en-us/library/ms164891.aspx

$exception: avoids the need to give your exceptions names (and cause variable not referenced warnings).

$user: tells you which user is running the application...sometimes useful when trying to diagnose permission issues.

Brian
  • 25,523
  • 18
  • 82
  • 173
3

Close all documents other than the one your on by right clicking the doc's tab and selecting "Close All But This." You can do this in many other IDEs and browsers as well. Not a big feature but I find that I use it 10+ times a day. This feature was hidden from me for many years. I should map it to a keyboard shortcut :p

Tim Santeford
  • 27,385
  • 16
  • 74
  • 101
3

Ctrl+Tab - switch between open tabs/windows in Visual Studio 2005 & 2008.

Kind of like Alt+Tab in Windows, brings up a little box just for the currently open VS files.

Here's a sample screenshot:

alt text http://lh3.ggpht.com/_FWrysR9YI18/TFOGxnX9ShI/AAAAAAAAAQI/a-ByCRMmrpw/ctrltab.gif

walterbing1
  • 533
  • 3
  • 6
2

I always map control + alt + f4 to documents.CloseAllWindows in options>environment>keyboard.

Is somewhat more intuitive than using the mouse.

2

I think the ability to right click on a Stored Procedure in Server Explorer and debug..

RobS
  • 9,382
  • 3
  • 35
  • 63
2

Ctrl+Shift+L deletes the current line (without cutting it to the clipboard)

SLaks
  • 868,454
  • 176
  • 1,908
  • 1,964
2

View, Code Definition Window.

The Code Definition Window shows the definition of the currently selected identifier (If it's in your solution, it'll show your sourced; otherwise, it'll extract metadata, like right-click, Go To Definition)

Ray
  • 187,153
  • 97
  • 222
  • 204
SLaks
  • 868,454
  • 176
  • 1,908
  • 1,964
2

I see that lot of us are posting shortcuts. I have printed this poster, it's very helpful to learn those shortcuts - nowadays I look very rarely at the poster 'cause I've learned most of them :)

Link for VS posters:

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=c15d210d-a926-46a8-a586-31f8a2e576fe

My favourites are Refactoring ones (CTRL-R + Something)

m1k4
  • 829
  • 2
  • 12
  • 26
2

Copy-paste from a Watch window of an object's expanded properties in the debugger into Excel will perserve the tabular format and persist the data after the debug session is over.

Mark Cidade
  • 98,437
  • 31
  • 224
  • 236
2

One that I only just discovered. When dealing with COM it's possible to lookup a brief message from the cryptic hexadecimal error number using a tool called errlook.exe.

The useful tool is located in your VS\Common7\Tools directory.

Ian
  • 33,605
  • 26
  • 118
  • 198
2

There is this blog on MSDN thats got some nice tips and tricks

http://blogs.msdn.com/saraford/archive/tags/Visual+Studio+2008+Tip+of+the+Day/default.aspx

obelix
  • 986
  • 8
  • 14
2

The most important feature I can't live without is Visual Studio 2008. :P

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
xanadont
  • 7,493
  • 6
  • 36
  • 49
2

The Debugger :-) Beats Notepad by miles.

Michael Stum
  • 177,530
  • 117
  • 400
  • 535
2

The features I like the most are

  1. Bookmarks feature. You can add/remove bookmarks in code(kinda like breakpoints), and you can navigate directly between them by using next/previous bookmark. Very useful if you are making changes in two places at once, and want to swap between the two frequently.
  2. The comment/uncomment feature. Ctrl+E , Ctrl+C/U for C# settings.
  3. The increase/decrease indent of a line. (Only available for VC by default. To assign for C#, go to tools -> Options -> General -> Keyboard and change the Edit.IncreaseLineIndent/Edit.DecreaseLineIndent for TextEditor)

PS: I want to know how to navigate to the members drop down list (just below the tabs list) by the keyboard.

apoorv020
  • 5,420
  • 11
  • 40
  • 63
2

Here is the Macro source for my aspx/aspx.cs flipper. It works in 2005, but it may have issues in 08.. I'm not sure... This was taken from my other cpp/h flipper, so there might be some clean up needed to make it the best it could be. I'm not paid to write Macros, so I have to blast though them as quickly as possible when I need one.

    Sub OpenASPOrCS()
    'DESCRIPTION: Open .aspx file if in .cs file, open .cs file if in .aspx file
    On Error Resume Next

    ' Get current doc path
    Dim FullName
    FullName = LCase(ActiveDocument.FullName)
    If FullName = "" Then
        MsgBox("Error, not a .cs or asp file!")
        Exit Sub
    End If

    ' Get current doc name
    Dim DocName
    DocName = ActiveDocument.Name

    Dim IsCSFile
    IsCSFile = False
    Dim fn
    Dim dn
    If (Right(FullName, 3) = ".cs") Then
        fn = Left(FullName, Len(FullName) - 3)
        dn = Left(DocName, Len(DocName) - 3)
        IsCSFile = True
    ElseIf ((Right(FullName, 5) = ".aspx") Or (Right(FullName, 5) = ".ascx")) Then
        fn = FullName + ".cs"
        dn = DocName + ".cs"
    Else
        MsgBox("Error, not a .cs, or an asp file!")
        Exit Sub
    End If

    Dim doc As EnvDTE.Documents

    DTE.ItemOperations.OpenFile(fn)
    doc.DTE.ItemOperations.OpenFile(fn)

    If Err.Number = 0 Then
        Exit Sub
    End If

    ' First check to see if the file is already open and activate it
    For Each doc In DTE.Documents()
        If doc.Name = dn Then
            doc.Active = True
            Exit Sub
        End If
    Next

End Sub
LarryF
  • 4,925
  • 4
  • 32
  • 40
2

Ctrl+L deletes the current selected line. This is an awesome time saver (if used responsibly of course!!!)

Rad
  • 8,336
  • 4
  • 46
  • 45
  • 2
    Unfortunately it *cuts* the current line, pwning your clipboard. I really wish there was a command that just deleted the current line... – teedyay Mar 05 '09 at 10:58
  • And Ctrl + X while nothing is selected cuts the current line. Same for copy. No need to remember any new letters of the alphabet then. –  Jul 16 '09 at 08:23
  • 3
    Shift+Ctrl+L deletes the current line without putting it in the clipboard. (From SLaks's answer.) – j_random_hacker Aug 31 '09 at 05:24
2

Ctrl-M + Ctrl-L Toggle Collapse All - Expand All

davidnr
  • 3,443
  • 2
  • 19
  • 14
2

Ctrl-T swaps the last two letters. For example, "swithc" -> "switch".

  • @Shoosh, it's quicker than prinft m_variablena "woops!", backspace, backspace, backspace, backspace, backspace, backspace etc... – Benjol Sep 02 '09 at 06:46
  • 1
    Actually i just tried this in VS 2008 and it seems to swap the two letters that are on either side of the cursor, so if you have switch and the cursor is between the w and i Ctrl-T makes it siwtch. – John C Sep 24 '09 at 12:50
1

CTRL-G for jumping to a specific line number. Saves a few seconds when you've got a line number in a large code file.

Charlie Salts
  • 13,109
  • 7
  • 49
  • 78
1

I wanted to talk about comment (Ctrl + k, Ctrl + c) and uncomment (Ctrl + k, Ctrl + u) shortcuts but a Bratt (:p) already mentioned them.

How about the Ctrl + k, Ctrl + d shortcut, very convenient to format markup (ASP.NET, HTML) and JavaScript code!

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
elpipo
  • 124
  • 5
1

I don't know how unknown most people consider them to be, but I don't think that a lot of people use snippets.

I discovered them a while back and then found that they were customizable by editing the xml in the Visual Studio Program Files directory. They make it super easy to add a lot of code quickly.

Also, to save time when using snippets make sure you hit tab twice and not try to do everything through the right click menu.

Dusty
  • 4,667
  • 3
  • 29
  • 35
  • 1
    You can also put them in MyDocs\Visual Studio 200?\Code Snippets – SLaks Jun 19 '09 at 12:47
  • You can see some snippets here: http://stackoverflow.com/questions/15111/do-you-have-any-recommended-code-snippets-for-microsoft-visual-studio/ – SLaks Jun 19 '09 at 15:57
1

Not exactly a hidden feature, but one thing I've done is add a "Start Without Debugging" button next to my "Start With Debugging" button. Just click the down arrow at the right end of the toolbar. Then select "Add or Remove buttons". Then Customize. In the commands tab select the Debug category. Find the Start Without Debugging command and drag it to where you want it on the toolbar.

Slapout
  • 3,759
  • 5
  • 40
  • 61
  • 1
    CTRL-F5 is the shortcut for this, with the default settings. Great way to run a faster build, or to not hit your breakpoints. – Eddie Parker Jan 19 '09 at 18:18
1

My best feature is one I had to make myself.. It's a cpp/h flipper. If you are looking at the .h file, and hit this macro, (or its keyboard shortcut), it will open the cpp file, and vice-versa.

I can provide the source if anyone wants it.

LarryF
  • 4,925
  • 4
  • 32
  • 40
1

Enable Intellisense in Skin Files

  1. Go to Tools->Options menu.
  2. Pick Text Editor -> File Extesion fom a tree at the left part of Options dialog.
  3. Type skin in Extesion text box.
  4. Select User Control Editor from Editor dropdown.
  5. Click Add and then Ok to close dialog and re-open your skin files.
Greg
  • 16,540
  • 9
  • 51
  • 97
1

Mouse Left Click resets your cursor to the position your pointer is currently hovering. Very useful for navigating through Visual Studio.

Alex
  • 75,813
  • 86
  • 255
  • 348
1
  • Vertical split of the window using "New Window" and "New Vertical Tab Group" combination.

There is only horizontal split in VS by default, but trick with window duplication allows to use vertical split too.

  • Vertical selection is good (it accessible with keyboard too: Alt+Shift+[Ctrl]+Arrows). But sometimes I need to use Vertical Copy/Cut and Paste. VS is smart enough to handle this correctly.

  • There are also very useful features: Go Next/Prev Scope (Alt+Down/Up), Go to Implementation (Alt+G), but they are a part of the Visual Assist X plug-in.

zxcat
  • 2,054
  • 3
  • 26
  • 40
1

In addition to all others said like:

  • Ctrl + K + D
  • Ctrl + K + U
  • Ctrl + M + L
  • Ctrl + M + O

Selecting when you hold "Alt".
Hiting F12 on the instead of right click and choose "Go To Definition".

  • Ctrl + K + C for comment.
  • Ctrl + K + U for uncommenting.

Today if found something new:
In WebFroms in Design mode, go to Tools menu and choose "Generate Local Resources". It's really handy for making multilingual web applications.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Mostafa
  • 3,002
  • 10
  • 52
  • 79
  • Not sure what you mean by Ctrl-K-D? – Nam G VU Jul 02 '10 at 04:55
  • @Nam : When you copy some markup form some where else and past in your code , You lose indentation and some more thing , By Hitting Ctr +K+ D it reorganize again – Mostafa Jul 30 '10 at 19:48
1

How about Ctrl + C to copy the current line to the clipboard without doing any range selection. This is sooooo... simple and useful.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
1

Ctrl + Shift + F brings up "search solution" dialog and lists all the results in a nice navigable way, rather than visiting each result. Not only it's easier to use, it's also useful because it doesn't tamper with your search scope defaults you use with regular search.

Sedat Kapanoglu
  • 46,641
  • 25
  • 114
  • 148
1

I'm sure everyone knows this, it's not just VS, you can do it almost everywhere. If you press Ctrl + left arrow/right arrow you will go to the next/last word word. You can also Ctrl + Shift + left/right arrow to select whole words at a time.

Jose
  • 10,891
  • 19
  • 67
  • 89
1

Navigating around the references of a symbol in VS 2010: 1. Place your cursor at the symbol to high light all references 2. Ctrl - Alt - Up/Down to navigate backward/toward reference.

^_^

Nam G VU
  • 33,193
  • 69
  • 233
  • 372
1

The Open button in the File Open dialog has a little down arrrow next to it. Click that and you get the "Open With" option which includes the Binary Editor. As a systems-type guy, I find it quite valuable, but most of my colleagues hadn't known about it until I showed them.

AShelly
  • 34,686
  • 15
  • 91
  • 152
1

Re: Stopping the debugger from stepping into trivial functions.

In C#, you can also add an attribute [DebuggerStepThrough] (using System.Diagnostics) to a method. This causes the debugger to, ironically, not step through the method.

Lennaert
  • 2,455
  • 15
  • 15
1

Set next statement by right-clicking code view during debugging or just dragging the yellow arrow around.

This is really useful to debug again a part of the code you have recently stepped over, or maybe change the content of some variable and trying to execute a set of statements again.

Torleif
  • 2,334
  • 3
  • 27
  • 28
1

Reference tag of Visual Studio 2008 for JavaScript IntelliSense is a brand new hidden feature. Especially jQuery IntelliSense is a devastating!

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Canavar
  • 47,715
  • 17
  • 91
  • 122
0

  • Print the shortcuts from http://www.microsoft.com/downloads/details.aspx?FamilyID=6bb41456-9378-4746-b502-b4c5f7182203&DisplayLang=en">the Microsoft page and put them next to you. Try to learn a new one every day. You'll find all shortcuts already mentioned here + lots more. Some very useful contain formatting a code block, commenting, navigate between pages,...
  • Get Resharper, it's a plugin which whill greatly increase your efficiency. If you use Resharper, you can find a list with shortcuts.
  • Carra
    • 17,808
    • 7
    • 62
    • 75
    0

    Vertical selection with Ctrl-Left Click is pretty useful sometimes...

    Soo Wei Tan
    • 3,262
    • 2
    • 34
    • 36
    0

    Shift + Delete to cut whatever line the cursor is on.

    I use this all the time to delete whole lines of code.

    RodH257
    • 3,552
    • 5
    • 36
    • 46
    0

    I just wanted to copy that code without the comments.

    So, the trick is to simply press the Alt button, and then highlight the rectangle you like.(e. g. below).

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            //if (e.CommandName == "sel")
            //{
            //    lblCat.Text = e.CommandArgument.ToString();
            //}
        }
    

    In the above code if I want to select :

    e.CommandName == "sel"
    
    lblCat.Text = e.Comman
    

    Then I press ALt key and select the rectangle and no need to uncomment the lines.

    Check this out.

    Himadri
    • 8,600
    • 15
    • 47
    • 70
    0

    Just found out back and forward buttons on my mouse moves back or forward one document.

    Think I was wrong about this one. Only happens when searched for stuff.

    Pickels
    • 33,902
    • 26
    • 118
    • 178
    0

    Ever want to see all the implementations of one interface member? Use "Call Hierarchy"!

    Community
    • 1
    • 1
    Nam G VU
    • 33,193
    • 69
    • 233
    • 372
    0

    I updated my code flipper, I posted earlier. I added support for ASP Controls.

    Larry

    LarryF
    • 4,925
    • 4
    • 32
    • 40
    0

    Here's an old blog article on some of the hidden debugger features in the expression evaluators.

    Steve Steiner
    • 5,299
    • 4
    • 32
    • 43
    0

    Task List Tokens

    Configured task list tokens are retrieved later while opening task list window and select user comments option, this will display all user comments that contains configured tokens.

    This will be so useful if you try to retrieve TODO comments for example.

    To use it; Tools --> Options --> Environment --> Task List, add required tokens.

    Ahmed Atia
    • 17,848
    • 25
    • 91
    • 133
    0

    A few that I know or haven't seen posted here.

    • Crtl + Space encourage Intellisense to complete a word.

    • Customize toolbox - Right click on toolbox, that brings up popupmenu > Choose items > Check/Uncheck boxes > Ok.

    • Start Visual Studio without splash page. Windows + R then type devenv /nosplash and press Enter.

    cpx
    • 17,009
    • 20
    • 87
    • 142
    0

    I use it every time I open a file. And that's why I just hate regions.

    Collapse to definition

    Ctrl+M+O

    Piotr Perak
    • 10,718
    • 9
    • 49
    • 86
    0

    Break on the line where exception occurs

    If you want to break on the line where Exception has occured then you can use CTRL + ALT + E and select the check box against CLR under Thrown Column.

    This will work even if the exception is handled by the user.

    P.S:

    I tried posting the screenshot but not able to do it since new users aren't allowed to post images. Sorry !

    Sundeep Arun
    • 23
    • 1
    • 7
    0

    Here are a few which I didn't see listed yet:

    1. Quickly find selected text: When text is selected hit Ctrl + F3 and then subsequently F3 to quickly find that text in a given file
    2. Close multiple files: When you have many windows open and you want to clear only some of them (as apposed to 'close all but this etc.) Go to Window -> Windows... a dialog pops up and now you can select the windows you want to close
    3. Navigate to a particular file: When your solution has many files it can take a while to find a file in the solution explorer. No problem! Select your solution and start typing the name of the file and you are kindly directed to your file!
    Danield
    • 121,619
    • 37
    • 226
    • 255
    0
    • Ctrl + Z is Undo obviously, but will also Undo auto formatting applied by studio.

    Very useful when copying/pasting hardcoded tables that are spaced for readability. When you paste Studio will apply formatting and nothing lines up any more. A quick Ctrl-Z restores your nice alignment.

    GazTheDestroyer
    • 20,722
    • 9
    • 70
    • 103
    -1

    After having read through all these marvelous (and some repetitive) posts, I have some to add that I don't think I saw:

    CTRL+Z = undo

    CTRL+Y = redo

    ;-)

    Also, don't forget to modify the keyboard shortcuts! Tools > Options > Environment > Keyboard

    LOTS of goodies! I have F9 == stepinto, f10 == step over and f11 == step out. VERY useful.

    Another not cited that I use somewhat often (although most people probably have a toolbar with this button): f6 == Build Solution.

    Enjoy!

    lmat - Reinstate Monica
    • 7,289
    • 6
    • 48
    • 62
    -4

    Visual Assist, in general, while a bit OT for this question, is a great app and really helps with the day-to-day running of visual studio. Their open-any-file and find-any-symbol windows are particularly awesome.

    tenpn
    • 4,556
    • 5
    • 43
    • 63