Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>The biggest issue here is that you are looking at the <em>reference assemblies</em>, particularly for those of .NET 4, judging from what you posted. Which are special assemblies, they have all their IL stripped out and just contain the metadata. This is new in .NET 4, it solves an old problem in earlier versions of .NET. Where the reference assemblies were simply a copy of the actual assembly installed in the GAC.</p> <p>This caused trouble, changes were made in later releases and service packs that were breaking programs. Especially the WaitHandle.WaitOne(int) overload was notorious, it was added in .NET 3.0 (aka .NET 2.0 SP1). And unwittingly used by programmers that found that overload a heckofalot easier to use then the mysterious WaitOne(int, bool) overload. But with the problem that their program would no longer run on the original .NET 2.0 release version, producing a MissingMethodException.</p> <p>Adding this overload was in general a pretty naughty thing to do, they modified mscorlib.dll but did <em>not</em> change its [AssemblyVersion]. By providing separate reference assemblies in .NET 4, this problem cannot occur anymore. Microsoft can now modify the public interface of .NET types without breaking anything. And have done so with gusto, several .NET 4 intermediate releases have been slip-streamed without anybody noticing.</p> <p>So be sure to disassemble the <em>real</em> version of mscorlib.dll, the one in the GAC. Which for .NET 4 is stored in a different directory, c:\windows\microsoft.net\assembly, not c:\windows\assembly. Which no longer is protected by the explorer shell namespace extension, you can simply use File + Open to browse the GAC directories. You'll find the 32-bit version in the C:\Windows\Microsoft.NET\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089 directory.</p> <p>That isn't quite the end of the story, when you drill down you'll find Array.CopyTo() calling an internal helper method named Array.Copy() that has the [MethodImpl(MethodImplOptions.InternalCall)] attribute. Again, without a method body. The attribute tells the just-in-time compiler that the method is actually implemented in C++ inside the CLR. See <a href="https://stackoverflow.com/questions/8870442/how-is-math-pow-implemented-in-net-framework/8870593#8870593">this answer</a> to find out how to see the source code for such methods.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload