.NET Framework 2.0 Service Pack 1 types are missing
Opened this issue · 3 comments
Very odd one here, mscorlib.dll as installed by dotnet9x seems to be missing the System.DateTimeOffset
type?
(Left, dotnet9x mscorlib, right, .NET 2.0 mscorlib as present on Windows 11)
Loading the binaries in JustAssembly versus a known good mscorlib.dll shows the following APIs are also missing:
System.GCCollectionMode
System.GCNotificationStatus
- some APIs in
System.GC
System.Collections.Generic.ArraySortHelper<T>
(and friends)System.Reflection.Emit.DynamicAssemblyFlags
System.Reflection.Emit.GenericFieldInfo
System.Runtime.GCLatencyMode
System.Runtime.CompilerServices.JitHelpers
System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute
System.Runtime.InteropServices.SafePointer
System.Runtime.Serialization.SurrogateForCyclicalReference
System.Security.SecuritySafeCriticalAttribute
System.Security.SecuritySafe
System.Security.Policy.IDelayEvaluatedEvidence
System.Security.Policy.IReportMatchMembershipCondition
System.Threading.ThreadPoolGlobals
System.Threading.ThreadPoolRequestQueue
I'm honestly not sure where these APIs went? Sorta wondering where the mscorlib.dll
you're using here came from, it could be a .NET 3.5 thing? But then DateTimeOffset
was added in .NET 2.0? It's very strange.
Digging a bit more, it seems these were mostly added in .NET Framework 2.0 Service Pack 1 whereas this package seems to be based on the RTM, SP1 is a requirement for .NET 3.5 to be properly functional so it might be worth updating these binaries to their SP1 (or better, SP2) equivalents?
More info:
https://www.hanselman.com/blog/catching-redbits-differences-in-net-20-and-net-20sp1
https://hanselmanblogcontent.azureedge.net/RedBitsChangesv2.html
Yeah it's based on RTM because SP1 (technically) dropped support for 98SE, but that's probably not relevant anymore with our backported runtime. The SP1 MSIL DLLs can probably be patched and added here.
I also wonder if newer versions of mscorlib.dll have fixed SSE2 checks that won't require file patches, I think this is something that should be looked into.
Nah the SSE2 check was in the JIT compiler in mscorwks.dll
, shouldn't be an issue from now on in any MSIL code.