Reflector 7.6.1 comes just a couple of months after the Reflector 7.6 release. We wanted our release to concur with the Visual Studio 2012 launch to keep to our promise of sim-shipping alongside Visual Studio and to show our continuing support for new technologies from Microsoft.
We’ve been doing some technical investigation around improving the Power Commands functionality lately. As part of that, we’ve been over some of the keyboard shortcuts in .NET Reflector, with a view to making some of them more sensible.
Reflector doesn’t have too many keyboard shortcuts but some of them are pretty useful, and you may not know about them all. I’ve picked out some of the more useful ones and detailed them below.
Visual Studio 2012 is slated to ship soon, and when it does, Reflector will be sim-shipping right there alongside it. As part of our work to support the newest technologies from Microsoft (C# 5, WinRT, .NET 4.5) we’ve been working on Visual Studio 2012 integration and the new theming styles.
Nigel, our developer who’s been doing most of this UI coding, tells us a bit more about the work involved and how he did it:
We believe it’s a better experience for most of our users. It also give us a way to uninstall much more cleanly ,which is something which gets queried a whole lot on the forums:
We released the latest Early Access release yesterday afternoon, and we’ve made some improvements to the installation process. However, before we jump into the details a recommendation:
Before you install this latest release, please uninstall the previous one (build 22.214.171.1244). More on this later.
And now, on with the walkthrough….
The bug: When attempting to update .NET Reflector’s Visual Studio extension, the installation fails with a message “The certificate for a digital signature in this extension is not valid.” This is a Microsoft bug and is detailed here: http://support.microsoft.com/kb/2581019
What causes it: (From the link above) this issue occurs because Windows XP and Windows Server 2003 handle the Certificate Revocation Lists (CRL) differently than other operating systems.
When Extension Manager handles the Certificate Revocation Lists (CRL), Extension Manager uses the same method for all operating systems. However, Windows XP and Windows Server 2003 handle the Certificate Revocation Lists (CRL) differently than other operating systems. Therefore, issue 2 occurs.
The journey towards asynchrony
When we first started working on the current version of Reflector, one of our main objectives was to provide full support for new Microsoft technologies. Since then our team has worked on making Reflector available for Dev11, and compliant with its new visual theming scheme. The async features in the new versions of C# and VB are a major step forward towards asynchrony and its implementation has been made much easier in practice.
With the introduction of the new Async/await keywords and new approach to Task-based programming, we realised that it wouldn’t be long before our users wanted to find out more about what’s happening under the bonnet with the new asynchronous programming model.
In the past we’ve been mentioned quite a bit in conjunction with SharePoint. There are plenty of blog posts out there about using Reflector to get your head around it, and a lot of you have told us about your SharePoint experiences, but we haven’t really done any dedicated development around it.
We’ve added some SharePoint content to the main .NET Reflector site, which hopefully you’ll fine useful:
We also thought we’d try to do something in the tool itself, to help those of you who have this particular challenge in your lives.
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.