Use directory-of-MSBuild in node handshake (#4928)
Use directory-of-MSBuild in node handshake (#4928)

Because CommunicationsUtilities is in Shared, it can get compiled into multiple
different assemblies. Important here are MSBuild.exe, MSBuildTaskHost.exe and
Microsoft.Build.dll.

If the method called during the handshake is from a mismatched assembly from
the host, the handshake can spuriously mismatch. But we can't unify on a
single assembly because MSBuildTaskHost doesn't load any other modern assemblies
(only .NET 3.5 MSBuild assemblies).

Instead, use the directory of the running MSBuild assembly in the handshake.
All current distributions of MSBuild require having all the assemblies in the
same directory and loading them together as a set, so this should not lose
generality.

Also added logging of the components of the hash under
MSBUILDDEBUGCOMM.

Co-authored-by: Nathan Mytelka <87e52c5fa290283b82f2f5d2cc2f147d0cee85f2@users.noreply.github.com>
chipitsine/msbuild,cdmihai/msbuild,cdmihai/msbuild,mono/msbuild,mono/msbuild,AndyGerlicher/msbuild,AndyGerlicher/msbuild,sean-gilliam/msbuild,mono/msbuild,sean-gilliam/msbuild,rainersigwald/msbuild,chipitsine/msbuild,sean-gilliam/msbuild,AndyGerlicher/msbuild,AndyGerlicher/msbuild,chipitsine/msbuild,cdmihai/msbuild,rainersigwald/msbuild,rainersigwald/msbuild,chipitsine/msbuild,rainersigwald/msbuild,sean-gilliam/msbuild,mono/msbuild,cdmihai/msbuild