When you see to screen of target framework it seems you can select any version of target framework. But this is not true.
First restriction is target machine. Not all operation system has support any .NET framework version, this is a table of support .NET dependens of version of OS - .NET Framework versions and dependencies, Also in target machine is possible to define minimum installed version programmatically Determine which .NET Framework versions are installed or by special utility .NET Framework Setup verification utility:
Each Visual Studio run to own .NET framework (for example VS2017 for run use .NET 4.7.2) support only restricted number of target .NET Framework Version. Also each Visual Studio has own redistributable package what must be working correctly in target computer Supported Visual C++ downloads.
This restriction is define in folder like C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin and contains various library used Visual Studio and especially many restriction contains MSBuild - this is descriptions of step to assembly result DLL.
For Example in the screen below you can see how is impossible to set target framework to 4.6 because minimal framework is restricted by Microsoft.Common.CurrentVersion.targets as 4.6.1.
Each framework has own opportunity, for example NET 4.8 has support button tooltip for window application, NET 4.7, there is a full list of new future of each .NET version.
Each package you used in application has own restriction. For example SQLite officially declare only support of 4.6 and not higher - System.Data.SQLite Downloads:
In my computer SQLite working in NET 4.8, but in computer of my clients SQLite for NET 4.8 show various unpredictable error.
Various installer has various restriction. Maybe I describe this problem more detail later. MS installer most unpredictable and ungovernable - it calculate dependency and use sometimes library from GAC, sometimes from program package, sometimes from Visual Studio folder. It woking fine only in simple projects, Wix installer officially support no higher than 4.6.2 :
There are various tricks to increase support framework by manually read registry and handle it by own code Inside .WXS, but it's look terrible.
|<SITEMAP> <MVC> <ASP> <NET> <DATA> <KIOSK> <FLEX> <SQL> <NOTES> <LINUX> <MONO> <FREEWARE> <DOCS> <ENG> <MAIL ME> <ABOUT ME> < THANKS ME>|