Visual Studio manages the .NET Framework
assembly references well on a project basis.
It is automatic but also brings about confusions in some situations.
As discussed earlier, the .NET Framework versions
4.0 and later, such as 4.0, 4.5, and 4.5.1 has a single place, a version specific
sub-folder (v4.0.30319), under the Windows .NET Framework location:
C:\Windows\Microsoft.NET\Framework\v4.0.30319
However, under the Reference Assemblies
.NETFramework location of the Program Files (x86) directory, there are all the
three flavors:
C:\Program Files (x86)\Reference
Assemblies\Microsoft\Framework\.NETFramework
The v4.x version specific .NET Framework assemblies
such as the System.Windows.Forms.dll that are referenced by the Visual Studio
Reference Manager are pointing to these locations now, instead of the Windows
.NET Framework location, as also mentioned before.
In this post, we are going to explore a bit deeper
about these. A simple question: why is
the version specific folder v4.0.30319 necessary in the Windows .NET Framework
directory?
Let’s check the properties (especially the
Size) of the System.Windows.Forms.dll first:
The size of the same assembly but
in different folders under the Program Files (x86) next:
As can be seen, all the four
versions of the same assembly have different sizes, which are as expected. However, the interesting point is that the
size of the v4.0.30319 one is more than the total size of the other three. Let’s do an exact math calculation here.
1,637,736 + 1,507,344 + 1,507,456 = 4,652,536 bytes
4,850,384 – 4,652,536 = 197,848 bytes
4,850,384 – 4,652,536 = 197,848 bytes
So, some educational guess could
be made here, we believe. The Windows
.NET Framework v4.0.30319 assembly is the host of all other flavors deployed to
the Reference Assemblies folders under Program Files (x86). The extra around 200 KB in the host is obviously
used to index all the three versions?
great
ReplyDelete