Well, in fact, you will have to ask the developers who are responsible for creating the MSBuild scripts , because in principle this is really not needed and is not used. And they themselves know it. For a standard C ++ project file, these are the lines that cause the property to be set (Microsoft.Common.targets):
<PropertyGroup Condition="'$(TargetRuntime)' == ''">
<TargetRuntime>Managed</TargetRuntime>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetRuntime)' == 'Managed'">
<TargetFrameworkIdentifier Condition="'$(TargetFrameworkIdentifier)' == ''">.NETFramework</TargetFrameworkIdentifier>
<TargetFrameworkVersion Condition=" '$(TargetFrameworkVersion)' == '' ">v4.0</TargetFrameworkVersion>
</PropertyGroup>
source
share