MonoMod Versions Save

C# modding swiss army knife, powered by cecil.

v21.11.01.01

2 years ago

General

  • Replace .NET Framework 4.0 target with .NET Framework 4.5.2 (Thanks, Visual Studio 2022!).
    • Those who - for whatever reason - are stuck with .NET Framework 4.0, 4.5.0 or 4.5.1 will now be downgraded to the .NET Framework 3.5 experience. Sorry about that!

RuntimeDetour

  • Implement automatic jump scanning for common signatures in the .NET runtime platform backend.

Utils

  • Fix DynamicData not exposing base private members and add DynamicData.For for those who are paranoid about polluting the GC with short-lived objects.

NuGet: Patcher | Utils | RuntimeDetour | HookGen
Azure DevOps Pipelines: Build | Release

v21.10.10.01

2 years ago

Fix a regression introduced by the Wine check that went unnoticed in all previous testing, and allow for overriding it to return false (MONOMOD_WINE = 0).

NuGet: Patcher | Utils | RuntimeDetour | HookGen
Azure DevOps Pipelines: Build | Release

v21.10.08.11

2 years ago

This is a minor patch containing basic code to detect Wine (enforceable by setting the environment variable MONOMOD_WINE to 1) and to handle differences between CoreCLR JIT behavior on Windows and on Wine (one more layer of trampolines).

NuGet: Patcher | Utils | RuntimeDetour | HookGen
Azure DevOps Pipelines: Build | Release

v21.09.19.01

2 years ago

All

  • Work around problems which could be introduced by the system locale, thanks to .NET for defaulting to locale-aware default implementations on critical operations.

RuntimeDetour

  • Fix DetourNativeWindowsPlatform.LogAllSections (should only fully run in emergencies).
  • Try to navigate out of .NET Core x64 trampoline limbo once again, fixing a problem with undoing / updating hooks in certain environments with unloadable assembly load contexts.

NuGet: Patcher | Utils | RuntimeDetour | HookGen
Azure DevOps Pipelines: Build | Release

v21.08.19.01

2 years ago

RuntimeDetour

  • Make MemAllocScratchDummy public, fixing compatibility with mono runtimes hitting edge cases.
  • Fix instance methods which return 8 byte big structs on x86.

Utils

  • Fix self-referential DynamicMethodDefinitions.

NuGet: Patcher | Utils | RuntimeDetour | HookGen
Azure DevOps Pipelines: Build | Release

v21.08.05.01

2 years ago

RuntimeDetour

  • Add IDetourRuntimePlatform.TryMemAllocScratchCloseTo.
  • Implement x86 / x64 Abs64Split native detour:
    • 6 bytes overwritten in detoured function,
    • 8 bytes written to a nearby memory location obtained with TryMemAllocScratchCloseTo.

Utils

  • Add DynamicMethodDefinition.IsDynamicILAvailable.
  • Update FixReflectionCache to take invalidations into account.
  • Check for Environment.HasShutdownStarted in GCListener to avoid deadlocks in certain versions of mono (Thanks, @ghorsington!).

NuGet: Patcher | Utils | RuntimeDetour | HookGen
Azure DevOps Pipelines: Build | Release

v21.07.22.03

2 years ago

Utils

  • Expose GCListener and WeakReferenceComparer (previously internally used for DynData).
  • Add a .NET Framework reflection cache fix - see this SMAPI issue for more info.
  • Add GetModuleType and GetRealDeclaringType.
  • Fix IsDynamicMethod returning true too often on Mono.

NuGet: Patcher | Utils | RuntimeDetour | HookGen
Azure DevOps Pipelines: Build | Release

v21.07.08.03

2 years ago

Patcher

  • Don't forcibly look up assemblies in the GAC.
  • Take MonoModPatch names into account in more places.

RuntimeDetour

  • Take DynamicMethod -> RTDynamicMethod (.NET) / RuntimeMethodInfo (Mono) into account.

NuGet: Patcher | Utils | RuntimeDetour | HookGen
Azure DevOps Pipelines: Build | Release

v21.06.21.01

2 years ago

General

  • Enable building for .NET 5.0
    • All releases should be cross-platform, .dlls executable via dotnet
    • Some releases (most notably the MonoMod .NET 5.0 .zip on GitHub) might contain Windows native binaries.

Utils

  • Fix the iOS check, making it stricter than before.

NuGet: Patcher | Utils | RuntimeDetour | HookGen
Azure DevOps Pipelines: Build | Release

v21.04.29.01

3 years ago

RuntimeDetour

  • Only use MonoPosixHelper on mono or when preferred.

NuGet: Patcher | Utils | RuntimeDetour | HookGen
Azure DevOps Pipelines: Build | Release