Skip to content

Releases: BepInEx/Il2CppInterop

v1.5.1

02 Sep 07:00

Choose a tag to compare

Stable releases are available on NuGet.org as well!

What's Changed

  • AsmResolver System.Enum IsValueType=true workaround. Fixes #211 by @AndrewSav in #212
  • Use UTF8 in Il2Cpp PInvoke calls by @HookedBehemoth in #220
  • Fix GetIl2CppNestedType sometimes failing by @slxdy in #227
  • Add proper UTF-8 support by @slxdy in #228
  • Fix Pass 90 imports TargetFrameworkAttribute after corlib refs fixup by @slxdy in #229
  • Fix issue finding GetFieldDefaultValue on 2021.3.23 by @limoka in #90
  • Support prefixed types in ClassInjector.SystemTypeFromIl2CppType by @ds5678 in #153
  • Fix "Handle is not initialized" for Unity 2021.2.x games by @haolink in #232

New Contributors

Full Changelog: v1.5.0...v1.5.1

v1.5.0

13 May 21:54
763f427

Choose a tag to compare

Stable releases are available on NuGet.org as well!

What's Changed

  • Account for type name when renaming properties and methods from the deobf map by @thegu5 in #113
  • Add a more specific RunFinalizer signature for Summer Vacation! Scramble by @y0soro in #199
  • Add another GetFieldDefaultValue signature by @SamboyCoding in #86
  • Add awaiter implementation by @extraes in #133
  • Add debugger display attributes to the generator context types by @ds5678 in #161
  • ArrayBaseType handle GenericParameterSignatures by @DustinBryant in #203
  • Assign method metadata tokens before writing by @ds5678 in #180
  • Changed to LPUTF8Str to fix Obfuscated Class and Field Problems by @unreliablecode in #101
  • Cleanup arrays and annotate for nullability by @ds5678 in #185
  • Cleanup name validity by @ds5678 in #177
  • Create a non-generic Il2CppArrayBase class by @ds5678 in #126
  • Don't unbox non-blittable generic valuetypes for parameter loading by @Kasuromi in #69
  • Expand Macros Before Unstripping by @ds5678 in #168
  • Fix GenericMethod_GetMethod_Hook on Unity 2020.3.41+ by @limoka in #89
  • Fix Invalid Generic Parameter Names by @ds5678 in #154
  • Fix System.Func import off-by-one by @slick1015 in #132
  • Fix class injector abstract method handling by @WNP78 in #134
  • Fix issue #140 (AssetBundles cannot be loaded at runtime) by @aceman1209 in #197
  • Fix null ParameterDefinition when copying by @ds5678 in #181
  • Handle the case where GenericMethod::GetMethod is after the ret by @js6pak in #96
  • Il2CppStructArray<T>.AsSpan() by @ds5678 in #129
  • Implemented TypeComparer For GetOrCreateProperty When There Are More … by @krulci in #91
  • Improve Generics Unstripping by @ds5678 in #170
  • Improve Ldelem and Stelem Unstripping by @ds5678 in #184
  • Improve corlib type resolution during unstripping by @ds5678 in #171
  • Improve property resolution during unstripping by @ds5678 in #169
  • Improve type resolution for unstripping by @ds5678 in #158
  • Major generator memory leak fix by @slxdy in #193
  • Pool objects created when passing objects from generated assemblies to the user by @simonkellly in #92
  • Port generator to use AsmResolver by @ds5678 in #124
  • Prevent null strings in OriginalName by @ds5678 in #179
  • Refactor hook creation by @limoka in #85
  • Simplify adding a parameter and support either string/Utf8String by @ds5678 in #164
  • Small fixes by @limoka in #94
  • Special-case System.Enum as a generic constraint by @ds5678 in #160
  • Switch from using AttributeAttribute::Name to AttributeAttribute::Type by @ds5678 in #194
  • Treat pointers as value types by @ds5678 in #159
  • Unstrip Exception Handlers by @ds5678 in #157
  • Unstrip fields for constants and new structs by @ds5678 in #162
  • Update workflow files by @ds5678 in #125

New Contributors

Full Changelog: v1.4.5...v1.5.0

v1.4.5

04 Mar 20:22
v1.4.5
b4801bb

Choose a tag to compare

Stable releases are available on NuGet.org as well!

Changelog

Fixes

  • Generator: Don't unstrip stripped unity delegates (@Kasuromi via ee38874)
  • Generator: Workaround for Cpp2IL garbage method file offsets (@Kasuromi via 20bc6ba)
  • Runtime: Il2CppInteropUtils support for generic methods & types (@Kasuromi via 24f29f6)

v1.4.4

25 Feb 14:40
v1.4.4
b976fad

Choose a tag to compare

Stable releases are available on NuGet.org as well!

Changelog

Fixes

  • Runtime: Fix GenericMethod::GetMethod search for IL2CPP Master games (@nitrog0d via #64 & #67)
  • Runtime: Fix invalid return value when calling injected methods via Il2Cpp reflection (@kremnev8 via #74)
  • Runtime: Fix crash calling delegate invoke on il2cpp 29 or higher (@kremnev8 via #78)
  • Runtime: Shorten delegate type names with method signature (@Kasuromi via df33064)
  • Generator: Prevent processing of Cpp2IL injected types (@ds5678 in #68)
  • Generator: Fix constructors in non-blittable structs (@js6pak via #77)
  • Generator: Add support for byref generic parameters in methods (@Kasuromi via #79)
  • Generator: Preserve enum names when prefixing (@Kasuromi via 44f18f0)
  • Struct Generator: Fix bitfield generating and update Il2Cpp structs (@nitrog0d via #65)

v1.4.3

13 Dec 20:09

Choose a tag to compare

Stable releases are available on NuGet.org as well!

Changelog

Fixes

  • Generator: Fix namespace prefixing for nested types (@ds5678 via #61)

v1.4.2

12 Dec 20:37
v1.4.2
2295a2b

Choose a tag to compare

Stable releases are available on NuGet.org as well!

Changelog

Fixes

  • Runtime: Fix FindGetTypeInfoFromTypeDefinitionIndex for Unity games built with IL2CPP Master (@nitrog0d via #60)

v1.4.1

11 Dec 14:37
ba8fbf9

Choose a tag to compare

Stable releases are available on NuGet.org as well!

Changelog

Fixes

  • Runtime: Update sig scan for Class::GetFieldDefaultValue (@SamboyCoding via #58)
  • Generator: Ensure Proper Layout for Non-ValueTypes (@Kasuromi via #57)
  • Generator: Workaround garbage field offset values (@js6pak via #59)

v1.4.0

13 Nov 17:10

Choose a tag to compare

Stable releases are available on NuGet.org as well!

Changelog

Fixes

  • Runtime: Added initial support for v29 metadata (@Kasuromi via #55)
  • Runtime: Fixed InjectionHelper detour generation timing (@js6pak via #56)

v1.3.0

21 Oct 18:39
fee7efa

Choose a tag to compare

NOTE

The project has been refactored and renamed from Il2CppUnhollower!
Most of the changes are breaking, so don't naïvely upgrade your plugins and packages!

Please refer to changelog below for more information. Note that old Il2CppUnhollower assemblies are still available, and the code can be found in legacy-unhollower branch.

Stable releases are now available via NuGet.org!

Changelog

New features

  • Generator: Add implicit conversions for primitives to il2cpp object (#51)
  • Runtime: Improve Cast and PointerToValueGeneric performance (#52)

Fixes

  • Generator: Fix crashes on x32 when xref pointers are "negative" (#53)
  • Runtime: Fix GenerateDelegateForMissingICall on coreclr

v1.2.0

04 Oct 16:07

Choose a tag to compare

NOTE

The project has been refactored and renamed from Il2CppUnhollower!
Most of the changes are breaking, so don't naïvely upgrade your plugins and packages!

Please refer to changelog below for more information. Note that old Il2CppUnhollower assemblies are still available, and the code can be found in legacy-unhollower branch.

Stable releases are now available via NuGet.org!

Changelog

New features

  • Generator: Add Il2CppPrefixMode option that affects how generated assemblies are prefixed (#39, @ds5678). Two options are available
    • PrefixMode.OptIn (Default): Namespaces and assembly names specified in NamespacesAndAssembliesToPrefix list will be prefixed with Il2Cpp when generating interop assemblies.
    • PrefixMode.OptOut: All namespaces and assembly names will be prefixed with Il2Cpp when generating interop assemblies. You can opt out from the behaviour for specific namespaces and assemblies with NamespacesAndAssembliesToNotPrefix list
    • Note: The default represents the current behaviour of v1. Starting from v2 the default will likely be switched to opt-out
  • CLI: Added new CLI flags for setting the above options: --use-opt-out-prefixing, --add-prefix-to

Fixes

  • Generator: Skip generating interop wrapper methods for interface overrides (#48, @js6pak)
  • Runtime: Improve injecting classes that inherit from abstract types for x86 and x64 (#45, @js6pak)