Round tripping a VSIX project

Visual Studio 2012 introduced project file round tripping feature.  This lets developers edit the same project in Visual Studio 2010, 2012 and 2013 without the need to upgrade the project file or modify it in any way.  This was a highly requested feature by customers that allowed them to edit their project no matter what…

1

Authoring a Utility Library for Visual Studio

As I’ve developed VsVim over the years I’ve authored quite a few reusable Visual Studio components.  For the last 6 months I’ve had many of these factored out to a separate utility library and this last week I decided to publish them as a separate NuGet package.  Even if no one else every uses the…

2

DebuggerDisplay attribute best practices

The DebuggerDisplayAttribute is a powerful way to customize the way values are displayed at debug time.  Instead of getting a simple type name display, interesting fields, properties or even custom strings can be surfaced to the user in useful combinations [DebuggerDisplay("Student: {FirstName} {LastName}")] public sealed class Student { public string FirstName { get; set; }…

1

Why the debugging difference between C# and VB.Net return values?

A feature which seems to be getting more requests recently is support for seeing the return value of a function in the debugger without the need to assign it into a temporary.  C++’s had this feature for some time but it’s been lacking in managed debugging scenarios.  James Manning recently dedicated a couple of blog…

0

Automatically loading DLL’s in the debugger

In a recent post I discussed the apparent flakiness of extension methods and the debugger being a result of whether or not the DLL containing the extension methods were loaded into the debugee process.  Several users asked in the comment section why we didn’t fix the issue by just loading those DLL’s when an extension…

2

Improving the display of F# seq<T>’s in the debugger

F#’s seq<T> expressions are a frustrating item to inspect at debug time.  A seq<T> value is a collection and when users inspect such a value at debug time they want to see the contents of the collection.  Instead they are often presented with a view resembling the following The reason this happens is a consequence…

0

Advanced Multitargeting in VB.Net

Multi-targeting is a feature introduced in Visual Studio 2008 which allows developers to use new versions of Visual Studio to target earlier versions of the .Net platform.  It allowed users to target both the new 3.5 and 3.0 and the previous 2.0 profile with the same IDE.  Visual Studio 2010 continues this trend by adding…

0

Extension Methods and the Debugger

One source of confusion I find myself clearing up a lot is the use of evaluating extension methods in the debugger windows.  Users report evaluation as working sometimes but not others for the exact same piece of code.  Such flaky behavior can only be the result of a poorly implemented feature or subtle user error. …

6

Avoiding automation bugs when implementing IOleCommandTarget

Shortly after Visual Studio 2010 shipped I wanted to experiment with the new VSIX format for traditional Package extensions.  I fired up my copy of Visual Studio, ran through the new package project wizard.  But instead of a nice shiny new project I was greeted with a project load error dialog.  After a bit of…

0

Newlines in the immediate window

A question came up recently on stack overflow concerning the display of newlines in the immediate window.   The author noted that any .ToString method which contained a newline printed incorrectly when evaluated in the immediate window.  For example given the following ToString implementation public override string ToString() { return "Hello" + Environment.NewLine + "World"; }…

0