I understand the difference between the .NET Framework and the Runtime (CLR). However, the versioning does puzzle me a little.
For the past 8 years or so, the .NET Framework has increased in versioning, yet the CLR version seems to have stayed at 4.0. Have no changes been made to the CLR?
Does this also mean that the on the web server, to run an application built using 4.7.2, as long as the Runtime version 4.0 is installed, then it would still run?
I can see on the Microsoft website that there's a separate download for the Runtime package.
Thanks in advance.
Each version has added features and possibly contains CLR changes. If you use any of these features then you cannot run on a smaller version.
The .NET version system is pretty messy. You cannot gather much from the version integers themselves. But there is no need. What counts is merely the succession of versions.
There are three version epochs: 1.x, 2-3.x, 4.x. Assemblies must be compiled for one of them and can only be loaded there. Only 4.x matters now to most people.
You can target downlevel versions in Visual Studio. The compiler will then only let you use APIs that are available in that version. That way you can make sure that you can run on downlevel version numbers. This is not 100% failsafe since there have been behavior changes. But compatibility generally is extremely high with .NET.
For applications that you deploy on your own infrastructure I highly recommend synchronizing all developer and production machines to one .NET version if feasible. That way you will not experience compatibility issues and you can ignore the entire question of versions.