Monday 24 May 2010

.Net 4 oddities

I installed .Net 4 some days ago, but have not been able to play much with it (apart from "agenda reasons"... the SDK for .Net 4 was not released until last friday, SharpDevelop 4 is still in the works, Reflector support for .Net 4 is also a bit limited...).

Anyway, as I've ever had some interest in "low level" details, I checked a bit what had been installed and found a few things I'd like to mention:

  • If you check the %systemroot%\Microsoft.NET\Framework\v4.0.30319\ folder, you won't find there either mscorjit.dll or mscorwks.dll-mscorsvr.dll (the CLR engine). This does not make sense, while .Net 2, 3 and 3.5 were all running on CLR 2 (so, using the JIT compiler and CLR Engine in Framework\v2.0.50727), .Net 4 is running on CLR v4, so there has to be a new CLR engine somewhere. Also, there have been some performance improvements to the JIT compiler (but no new additions to CIL, as far as I know the only changes to it were the addition of generics back in v.2), so there should be a new JIT. I was googling a bit and found this. In brief, the new JIT is in the clrjit.dll Dll, and the new Engine in the clr.dll Dll

  • I had a look at the GAC to see the new installed assemblies, and imagine my surprise when I could not find any 4.0 assembly there. I found an entry in Stack Overflow that explains that there's a new GAC for version 4 assemblies, located in %systemroot%\Microsoft.NET\assembly\
    What that entry does not seem to answer clearly is why do we need 2 GACs, hadn't the GAC been designed as the solution to the Dll Hell issues?

  • While trying to locate the "missing" assemblies I noticed some repeated ones, so I did this question in Stack Overflow

No comments:

Post a Comment