I'm surprised there isn't something pseudorandom thrown in for good measure – like a few digits of a hash of the source file.

The trick with using characters which by definition are not allowed inside variable names, "<" and ">", should be sufficient no?

I believe the reason for this is that it would break deterministic builds.

dotnet build is’t deterministic as default. Never has been.

Except deterministic builds have been the default since 2015?