.Net 4.5 Developer Preview

So I, like apparently many others, downloaded the windows 8 developer preview.

Plenty of interesting stuff under the hood, but I decided to jump into .Net 4.5.  In the dev preview there is a VS 11 Express edition, for Metro apps. I quickly discovered that .Net 4.5 ‘Core’ Edition, which is what you can use in Metro, is quite a bit different. (How many hours did I spend trying to write the word hello to a file…)

So I decided to do a version comparison. Enter RuntimeVersionCompare.html.  Note this is a 17MB html document, so it may take a little while to download – and I may have to find somewhere else to host it if it becomes popular…

There are 4 colours used.  Red means ‘Only in .Net 4’, Green means ‘Only in .Net 4.5’, Yellow means ‘Missing from .Net 4.5 Core’ and white is whatever else is left over.  With 5 flags (since I included the client profiles), there are potentially 31 scenarios for colouring, but I was lazy.  Each entry does contain numbers mapping to which version contains the specific API, so if you don’t like the colours as they stand, a simple re-parse and output should fix that.  (You could even risk it and try and do such a change using regular expressions…)

You will see a lot of yellow – in part this is because of the absence of WinRT API in the output which Metro can use in addition to .Net 4.5 Core.  WinRT API is missing mostly because it is described using winmd files, which I haven’t yet attempted to reverse-engineer. (Hopefully they are actually .Net metadata-only dll files in disguise and ildasm will process them just fine…)

Also note that this analysis was all done using custom code which parses the output of IlDasm – as such it almost certainly contains errors, strange syntax in the output and many other flaws (not the least of which is that I didn’t use good CSS style in my output HTML).

Feel free to do whatever you like with this document, although attribution would be nice, and please try to avoid downloading it more than once…

2 thoughts on “.Net 4.5 Developer Preview”

  1. None of the code involved is amazingly interesting – mostly just many thousands of lines of hand written recursive decent parser for ILdasm output. From there it is just a parse tree visitor to collect every declaration from each input file set. These results are merged to produce a dictionary of declaration to which input sets the declaration can be found in. Finally those declarations are written out in a somewhat hierarchically sorted order.
    For a variety of reasons, I probably won’t be releasing this code any time soon.

Leave a Reply

Your email address will not be published. Required fields are marked *