Visual Studio manages the .NET Framework assembly references well on a project basis. It is automatic but also brings about confusions in some situations.
For .NET Framework versions 2.0, 3.0 and 3.5, those assemblies (e.g. System.Windows.Forms) shared by all the three versions with the same underlying CLR 2.0 are all placed in the following same Windows Microsoft .NET Framework sub folder (with the same version number as v2.0.50727):
Interestingly enough, under the same Windows sub folder (C:\Windows\Microsoft.NET\Framework), there are also the v3.0 and v3.5 version specific folders, but they seem to hold only those extra .NET Framework assemblies such as LINK or major updated ones such as WPF and WCF through our inspections.
Since version 4.0 on, including also 4.5 and 4.5.1, however, the System.Windows.Forms is placed in a version specific sub folder under the following .NET Framework Reference Assemblies of the Program Files (x86):
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework
Though they are in different folders now under the Program Files (x86), they have exactly the same Run-time Version as v4.0.30319, as can be seen from the screenshots. Interestingly enough again, under the Windows Microsoft.NET Framework folder, there is also exactly the same version specific sub folder:
There are no v4.5 or v4.5.1 sub folders though under the same Microsoft .NET Framework location in the Windows directory. In terms of why, we are going to explore in more detail, which will be demonstrated and discussed later on. Please stay tuned.