As good as the CodeLens feature is, there are limitations. A big one is that it will not track references for your code in XAML or ASPX files, so you might end up with an incorrect count in the references presented.
When a developer is in the part of the editor (where his or her attention belongs), then anything that takes them out of “the zone” is bad. Anyone who has worked on writing anything that requires focus should relate to the fact that interruptions can be a poison pill to productivity. For that reason, anything that lets developers stay in the zone is good. CodeLens helps with this mission, and Peek Definition works even more often in serving this purpose.
Peek Definition lets you not only see code for a procedure called in the code at hand, but it also opens it in a window that lets you edit it without losing the focus on the code. For this reason it can be argued that Peek Definition, rather than CodeLens, is the biggest new feature added to Visual Studio 2013.
It is a marked improvement on the previous mechanism of right-clicking on a method or procedure name and choosing Go to Definition, since the Peek Definition keeps focus on the code at hand while the latter whisks you away to wherever that definition lives in the solution. Navantis’ Gervin listed it as a huge improvement for his development, saying, “The new Peek Definition gives me that next layer down while encouraging me to stay focused where I am.”
He went on to confess, “Historically, when spelunking code, I would quickly get myself into trouble with ‘Go to Definition’—drilling further and further, opening up tab after tab until I forget where I was.” Distractions like this are the enemy of productivity, and Peek Definition is a revolutionary way to avoid it.
#!.NET and ASP.NET 4.5.1
Visual Studio 2013 ships with .NET Framework version 4.5.1, but as with the last few versions, you can target any version of the .NET Framework. The only significant change between .NET 4.5 and 4.5.1 is that the latter supports Automatic Binding Redirection for assemblies.
Redirection of assembly versions has been available since .NET 2.0, and it allows you to specify an override such that a different version of an assembly will be used. This is a situation many developers seek to avoid since it is not common knowledge that there is a mechanism that is available to work around it. For example, if you have a project that targets a specific version of the .NET Framework, but depend on an older (or newer) version of a type definition such as XML or some other class that has evolved over time, then you can direct the system to use the desired version. In .NET 4.5.1, this is done automatically when the compiler detects it for both Windows and Web applications.
The ASP.NET team was quite busy in this version of Visual Studio, and ASP.NET has what looks to be the longest list of new features of any piece of Visual Studio 2013. Sure to be a favorite for Web developers is what Microsoft is calling One ASP.NET. When creating a new ASP.NET project, picking Web Forms no longer means that you are barred from leveraging features from MVC in the project. As seen in Figure 2, no matter which of the templates you pick, additional folders and references can be added to the project. For example, many developers require the control for Search Engine Optimization that is afforded by using MVC, but they do not need that level of control for ancillary pages, which might be easier to build with Web Forms. Now the project can benefit from the best of ASP.NET.
I recently oversaw one SignalR development project that allowed users recording podcasts or on conference calls to signal each other through a browser without typing that they want to interject when the current speaker finished talking. For podcasts, this eliminates a great deal of editing as people try to break in for times when the participants are remote from each other and recording individually. For conference calls, especially during joint presentations, having a button that lets you raise your hand helps create seamless transitions. The new version brings abilities like sending messages to selected groups of users instead of broadcasting them to all. There is also expanded client support to include iOS and Android clients thanks to libraries from Xamarin.