This change implements version tracking the inputs and outputs of
generated code.
Version tracking is still best-effort - meaning that in some cases a
perfect system could avoid doing more work. However, since we base the
versions off of all of the inputs, we now that the guarantee that code
generation operations that happen 'out of order' will always result in
the newer inputs generating the newer outputs.
This change implements version tracking the inputs and outputs of generated code.
Version tracking is still best-effort - meaning that in some cases a perfect system could avoid doing more work. However, since we base the versions off of all of the inputs, we now that the guarantee that code generation operations that happen 'out of order' will always result in the newer inputs generating the newer outputs.
Fixes: https://github.com/aspnet/Razor/issues/2650