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 v188.8.131.526EAP4…
- The “about” box in the standalone component of Reflector has been given an overdue lick of paint. It’s now the same as what the Visual Studio extension displays.
- We’ve made the availability of the niche languages more configurable. Going through the Tools > Options > Languages menu in the standalone tool, you can now control whether Delphi and Oxygene are available in the languages drop-down menu as decompilation targets.
- The End-of-EAP dialog has had a refresh, and now gives you clear instructions on how to submit your feedback, jump up to the latest Early Access build, or uninstall the EAP entirely.
- Clive fixed a bug in the WinMD support, so that WinMD files are now discoverable on both 32-bit and 64-bit machines.
Visual Studio 11 theming
Nigel’s been unravelling how theming works in VS11, and how to make the .NET Reflector components that extend into Visual Studio play nicely with the Dev11 beta. This has involved a certain degree of re-plumbing in the Reflector UI, but Nigel is taking it all in his stride.
- We’ve got to a point where the Reflector Object Browser and context menus accept the Dev11 theme tones & background colours, so the Reflector extension should feel pretty natural inside Visual Studio.
- At the moment, we are aware of a minor bug when using the dark theme; some text in the ROB is rendered lighter than expected. We’re tracking this down, and will get it tidied up soon.
Clive & Ruchika are continuing to work down the list of 192 new async methods, making sure we emit sensible decompiled code in each case. Ruchika has got her head around how to effectively test async decompilation, which should start to speed things up.
- Taking a look at our current coverage, we support most of the new async methods in the System.IO namespace & some of the new methods in System.Xml. We don’t yet support the new methods in System.net or System.Web, but these are on the list for the next sprint.
- At the moment, we know Reflector doesn’t handle nested try blocks very well, and we’ve also taken steps to make sure we don’t emit anything totally mad. Essentially, anything that we’re not sure we can do right for .NET 4.5, we fail back to emitting in .NET 4.0 (I’ll come back to this in a moment).
If you’re interested to know a bit more about the challenge Clive & Ruchika are facing, it boils down to the fact that they’re trying to update Reflector to have coverage across not one, but 2 new compilers: one for the framework, and a separate (newer) one in Dev11.
At the moment they’ve achieved partial coverage, but they’re working hard to improve that. If the final release of .NET 4.5 is built using a more up-to-date compiler, then we’ll move as fast as we can to cover that, but we want to make sure you can start experimenting with the latest technology right now.
Any and all feedback about the latest build of Reflector is gratefully received! We’d particularly like to know about any issues you encounter with our async code and Dev11 theming.
In fact, with regards to the async feedback we’d love to see, let me explain that a little more. As I mentioned earlier, we’re trying to graciously fail back to .NET 4.0 code when we know we can’t decompile some async method you’ve targeted. So, any async code we’re displaying, we think we’re handling well.
As such, we’ve love to hear any feedback about async decompilation that has clearly failed in some way (i.e. where we’ve tried to generate async code, and it’s just not right).
Download the latest Early Access build of .NET Reflector, and let us know what you think. If you have any comments about the latest build, just send an email to EAP@reflector.net – we really appreciate your help.