Interesting Late Binding Scenario with ToString

Not to long ago I received an email from a customer who wanted to report a bug in the VB.Net debugger.  They believed that there was a bug invoking ToString on Integer types in the immediate window and provided the following sample as evidence i = 100 ? i 100 {Integer} Integer: 100 ? i.ToString("c02")…


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…


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…


Why is LINQ absent from debugger windows (Part 2)?

Some readers may remember an article I published almost half a year ago about LINQ being absent from the debugger windows.  That post explored the initial design of the feature, it’s limitations and ultimately why it was absent but promised a future article on a slightly different approach.  It’s quite late but I’ve finally had…


Nothing is private in the debugger (part 2)

In a previous post I discussed how accessibility is ignored when evaluating expressions in the debugger and the unexpected scenarios that it creates.  One case I neglected to mention in that article is how this behavior works with the VB late binding engine.  The expression evaluator only relaxes accessibility rules when binding an expression.  This…


Nothing is private in the debugger

The goal of the debugger is to provide rich inspection capabilities for a process.  The main method of inspection is through the evaluation of textual expressions which is handled by a language specific component known as the expression evaluator. This component is the data provider for a good portion of the debugger windows (watch, locals,…


The many cases of ByRef

One of the overlooked or simply misunderstood features of the VB language is calling a function which has a ByRef parameter.  Most languages support only a single method of passing parameters by reference [1], that is the scenarios directly supported by the CLR.  The CLR has a lot of restrictions on the type of values…


Dev Connection Talk Slides and Code

Thanks to everyone who attended my sessions at Dev Connections.  I’ve posted the material for both of my talks on my SkyDrive account.  This includes the slides and projects. Please let me know if you have any questions or problems with the materials or any additional feedback about the sessions. 


Speaking at Dev Connections in Las Vegas Next Week

Next week I will be speaking at Dev Connections in Las Vegas.  I will be running the following sessions VMS02: Future Directions for Visual Basic VMS04: Microsoft Visual Basic IDE Tips and Tricks Both of these talks will spend a bit of time talking about all of the progress and exciting new features we’ve added…


Why is LINQ absent from debugger windows?

As the owner of the VB.Net portion of the overall debugging experience, I frequently hear the request from customers to add LINQ support into the Watch / Immediate and Locals window.  Virtually every other type of expression is available in the debugger windows so why leave one of the most popular ones out? Quick Diversion:…