Understanding async code with .NET Reflector

By , May 3rd, 2012

Yesterday, I gave an overview of the problems that async solves, and how it actually solves them. As we saw in that post, async is remarkably cunning, and can become remarkably tricky to follow when applied in a real application, which naturally makes any decompilation a bit of a challenge. If you haven’t read the previous post on how async works already, I recommend you at least skim through it so that you know what examples we’ll be working with, and so that we’re all working with the same understanding of state machines.

Now, with that introduction done, we should have a look at some real code.

Continue reading »

      Comments (0)

Async: what is it for, and how does it work?

By , May 2nd, 2012

C# 5 has finally arrived, and the biggest new feature in the language is async, and its associated Await (contextual) keyword. Naturally, there’s been a lot of discussion from a lot of different points of view, and we’ve been working hard to make sure .NET Reflector can accurately decompile asynchronous code so that you can start investigating C#5 code right away. Just understanding how async actually works at the front end is no mean feat, and when you bear in mind that we’re juggling up to 3 different compilers, it’s been a fascinating challenge.

Before we dive into how we’re handing async code in Reflector, it’s worth grounding ourselves first. Let’s start with a quick look at what async is designed for, and then we’ll take a deeper dive into the nuts and bolts, and how they apply to us.

Continue reading »

      Comments (0)

EAP 7.6 Build 4

By , April 24th, 2012

The team is finally back under the same roof (back from assorted conferences and holidays), and we’ve been forging ahead with our Dev11 theming and C#5 async support. We also took the time to do a little house-keeping, which I’ll get out of the way first. So here’s what we’ve been working on for .NET Reflector v7.6.0.356EAP4…

Continue reading »

      Comments (1)

.NET Framework 4.5 support in .NET Reflector

By , April 12th, 2012

Given that .NET 4.5 is available as part of the beta for Dev11, we have added some new support functionality to .NET Reflector (this is already available in our EAP releases).

First, Reflector will now notice if you have .NET 4.5 installed on the machine. As 4.5 is an in-place installation, we notice the presence of certain files to trigger this.


Continue reading »

      Comments (1)

Debugging the debugging experience

By , March 30th, 2012

The CLR is a canny beast that takes liberties with optimising your code using several different mechanisms, which can make debugging retail builds of software an ungainly experience. I’ve been doing some investigation into how to make this process as similar as possible to “normal’ debugging, which I’d like to share with you. But first, let’s look at those liberties the CLR is taking.

Doing science with the Visual Studio Debugger.

Continue reading »

      Comments (1)

EAP 7.6 Build 2, Take 2

By , March 23rd, 2012

We released a patch for EAP build 2 this afternoon, and we recommend you grab it.

Due to an entertaining quirk, the async functionality Clive was working on didn’t actually play nicely on our users machines. Luckily, Clive very quickly figured out why, and today’s build fixes the issue. So, with the latest release, you’ll be able to see the very early async support we’ve been working on (please bear in mind that we’re only talking about a small subset of async functionality at this stage).

As an added bonus, Nigel has also been busy, so you’ll see some small enhancements to the Dev11 theming as well.

Take the new build for a spin, please let us know what you think, and have a great weekend

Cheers,

Chris

      Comments (0)

EAP 7.6 Build 2

By , March 20th, 2012

Visual Studio Dev 11 looks…. different.  If you’ve not seen it, then you’re in for a surprise (you can download the latest VS11 Beta from a link at the bottom of this post). It’s gone monochrome, with no colour in most of the icons, and colour is only used when you really need to look at something (apparently). The other new addition to the look is the idea of Themes. Dev 11 ships with a light theme and a dark theme (Must. Resist. Force. Comparisons.), which basically amount to light grey or dark grey.

The current theming of the .NET Reflector Object Browser in Dev11

Continue reading »

      Comments (0)

Grab a free copy of “Under the hood of .NET Memory Management”

By , March 13th, 2012

If you’ve ever wondered about .NET memory management, or had to get into the guts of your code to track down a memory leak, or wanted to make sure that your code performs as fast as possible, and with a small memory footprint, then I’ve got a book you should read. At the risk of being biased, it’s a book which I edited, and took from concept to print.

'Under The Hood of .NET Memory Management', by Chris Farrell and Nick Harrison

More to the point, it’s an eBook which is currently free to download: “Under the hood of .NET memory Management” by Chris Farrell and Nick Harrison. The book normally retails on Amazon for about $22, but you can download it for free (split into two parts) from the Red Gate website.
Continue reading »

      Comments (8)

A new EAP release: Dev11, .NET 4.5, and C# 5

By , March 9th, 2012

We’ve been a bit quiet on the EAP front recently, and there’s a reason for that. The rest of the team and I feel like we’ve spent the last fortnight locked in a meeting room. In hindsight, that’s substantially because we have. All I can see when I close my eyes is post-it notes, but we’re getting a lot closer to scoping out version 8 of Reflector.

V8 is all kinds of exciting, but still very much at the on-paper stage. But somehow, in the midst of all the planning, and sketching, and brainstorming, and well-intentioned bickering, Clive, Nigel, Ruchika, and Nick have shipped a new EAP.

The version 7.6 EAP is the first slice of our support for Visual Studio Dev 11, .NET 4.5, and C# 5

Reflector’s Visual Studio integration is now working in Dev11, so you can decompile code and start to debug it within the new VS beta. You can explore the changes in the .NET 4.5 framework too, and Clive has a blog post coming about this shortly.

Because it’s our first EAP, it’s not all up and running yet. For example, we aren’t currently decompiling the new C# async/await construct, but we’ll be fleshing out the C# 5 support in the coming releases.

To get an idea of what’s planned for Reflector 7.6, take a look at the EAP page

      Comments (0)

Assembly Diff Algorithms – it’s all in the details

By , March 8th, 2012

A long, long time ago in a galaxy far, far away, Sean Hederman wrote an add-in for Reflector called Reflector.Diff. It was originally created to help him dive into code differences between Framework versions, but he figured it could also work nicely for people who wanted to diff their own assemblies.

Screenshot of the old Reflector.Diff

We got in touch with Sean, and he gave us some more details into how he developed the Algorithm and UI in Reflector.Diff 2
Continue reading »

      Comments (0)