Deterministic reference assemblies in F# supposedly have been available since net7.0, but we have never been able to skip downstream project rebuilds after non-API-affecting changes when using them. I created the simplest possible reproduction, just touching a source .fs file and rebuilding, and the reference assembly MVID still changes randomly every time. However, the full implementation assembly still appears to be deterministic. Are there additional configuration options beyond ProduceReferenceAssembly and Deterministic that affect this behavior in F#? Doing the same thing in an analogous C# project produces deterministic MVIDs.
Repro steps
Clone https://github.com/DalekBaldwin/deterministic-mvid and follow the two steps.
Expected behavior
Reference assembly has same MVID and fake timestamp after touching source file with no changes and rebuilding.
Actual behavior
Reference assembly has different randomized MVID and fake timestamp. However, the full implementation assembly's MVID does not change.
Note that the resulting dlls have no string heap variation, so #19732 appears unrelated.
Related information
- Windows 11
- .NET SDK 10.0.300 and runtime 10.0.8
Deterministic reference assemblies in F# supposedly have been available since net7.0, but we have never been able to skip downstream project rebuilds after non-API-affecting changes when using them. I created the simplest possible reproduction, just touching a source .fs file and rebuilding, and the reference assembly MVID still changes randomly every time. However, the full implementation assembly still appears to be deterministic. Are there additional configuration options beyond
ProduceReferenceAssemblyandDeterministicthat affect this behavior in F#? Doing the same thing in an analogous C# project produces deterministic MVIDs.Repro steps
Clone https://github.com/DalekBaldwin/deterministic-mvid and follow the two steps.
Expected behavior
Reference assembly has same MVID and fake timestamp after touching source file with no changes and rebuilding.
Actual behavior
Reference assembly has different randomized MVID and fake timestamp. However, the full implementation assembly's MVID does not change.
Note that the resulting dlls have no string heap variation, so #19732 appears unrelated.
Related information