Harmony 2.0.4
Harmony 2.0.4 reverts a change in 2.0.3 that broke ABI compatibility
Fixes:
- Improve
AccessTools.*FieldRefAccess
safety by handling edge cases and having consistent error handling [9a3da4b] - Fix
AccessTools.FindIncludingBaseTypes
NRE on interface types [684b9b7] - Add
EditorBrowsableState.Never
to the specificAccessTools.IsStatic
methods [9be1fb0] - Reduce array copies in patch tracking [7991c14]
- Make sure the Harmony logging directory exists [69ef98e]
- Fix CTD in Linux when patching short methods (typically empty virtual methods) [406586a]
- Improve Harmony thread safety [f13beaf][1305a1f]
- Add handler cache for
AccessTools.MakeDeepCopy
[2f5c171] - Add
HARMONY_LOG_FILE
environment variable [318c1d2] - Remove unconditional call to
FileLog
[42d8567]
Added:
- More environment info at start of harmony log [bf3286d]
- Support patching methods with
ref
result [439b004]
New API in AccessTools:
delegate ref F StructFieldRef<T, F>(ref T instance)
StructFieldRef<T, F> StructFieldRefAccess<T, F>(string fieldName)
StructFieldRef<T, F> StructFieldRefAccess<T, F>(FieldInfo fieldInfo)
ref F StructFieldRefAccess<T, F>(ref T instance, string fieldName)
ref F StructFieldRefAccess<T, F>(ref T instance, FieldInfo fieldInfo)
Misc:
- Stop using Travis and AppVeyor and move all testing to Azure Pipelines
- Migrate from
ILRepack.Lib.MSBuild.Task
toILRepack.Lib.MSBuild
[36d8cbc] - Project now supports C# 8
- Various code and csproj cleanup