It seems like at some point assemblies Microsoft.Build, Microsoft.Build.Framework, etc. stopped changing their versions after updates, so the versions of actually different Microsoft.Build assemblies became the same (15.1). If an application depends on one of these libs and the same version (but different release) is installed in global assemblies cache (GAC), the app uses the version from GAC rather than expected lib placed near the executable. This leads to issues with missing types, members etc.
Could you please provide any ideas about solving such issues?
It would be cool if there was an opportunity to change that behaviour, but I couldn't find anything appropriate.
Answers are here.
It seems like nothing can be done here. For now, GAC can't be bypassed and nobody should add msbuild libraries to it.