实例介绍
MonoMod是一个modding“基础工作”(基础工具 框架)。由cecil驱动。
已经有以下游戏的Mod / mod加载器以某种方式使用它:
- Terraria:tModLoader,TerrariaHooks
- Hollow Knight:HollowKnight.Modding
- Celeste:Everest
- Risk of Rain 2:BepInExPack(BepInEx MonoMod R2API)
- Enter the Gungeon:Mod the Gungeon
- Rain World:RainDB通过Partiality
- Totally Accurate Battle Simulator:TABS-Multiplayer
- Salt and Sanctuary:Salt.Modding
- Nimbatus:Nimbatus-Mods通过Partiality
- Dungeon of the Endless:DungeonOfTheEndless-Mod通过Partiality
【核心代码】
文件清单
└── MonoMod-474b94118ad011e22c93add74decc753ee23032c
├── azure-pipelines-coretest.yml
├── azure-pipelines-docfx.ps1
├── azure-pipelines-postbuild.yml
├── azure-pipelines-prepushcommon.ps1
├── azure-pipelines.yml
├── Directory.Build.props
├── Directory.Build.rsp
├── Directory.Build.targets
├── docs
│ ├── Core
│ │ ├── Architecture.md
│ │ ├── CoreCLRJitHooks.md
│ │ └── NativeExceptionHandler.md
│ ├── Debugging.md
│ ├── README.Backports.md
│ ├── README.Core.md
│ ├── README.ILHelpers.md
│ ├── README.Patcher.md
│ ├── README.RuntimeDetour.md
│ ├── README.Utils.md
│ ├── RuntimeDetour
│ │ ├── implementation
│ │ │ └── ChainHotPatching.md
│ │ └── Usage.md
│ ├── RuntimeDetour.HookGen
│ │ └── Usage.md
│ ├── Switches.md
│ └── Utils
│ └── ModInterop.md
├── external
│ ├── iced
│ ├── iced.csproj
│ ├── iced.props
│ └── iced.targets
├── global.json
├── icon.png
├── LICENSE
├── MonoMod.sln
├── MonoMod.snk
├── README.md
├── src
│ ├── Common
│ │ ├── Common.csproj
│ │ ├── MethodImplOptionBackportsAlias.cs
│ │ ├── Shared
│ │ │ ├── MMDbgLog.cs
│ │ │ └── MultiTargetShims.cs
│ │ └── UnsafeAlias.cs
│ ├── MonoMod.Backports
│ │ ├── _Attributes.cs
│ │ ├── CompatibilitySuppressions.xml
│ │ ├── Directory.Build.targets
│ │ ├── MonoMod.Backports
│ │ │ └── MethodImplOptionsEx.cs
│ │ ├── MonoMod.Backports.csproj
│ │ └── System
│ │ ├── ArrayEx.cs
│ │ ├── Buffers,gte_std_2.1,gte_core_2.1.cs
│ │ ├── Buffers,is_fx,lt_core_2.1,lt_std_2.1
│ │ │ ├── ArrayPool.cs
│ │ │ ├── BuffersExtensions.cs
│ │ │ ├── ConfigurableArrayPool.cs
│ │ │ ├── IBufferWriter.cs
│ │ │ ├── IMemoryOwner.cs
│ │ │ ├── IPinnable.cs
│ │ │ ├── MemoryHandle.cs
│ │ │ ├── MemoryManager.cs
│ │ │ ├── ReadOnlySequence.cs
│ │ │ ├── ReadOnlySequenceDebugView.cs
│ │ │ ├── ReadOnlySequence_helpers.cs
│ │ │ ├── ReadOnlySequenceSegment.cs
│ │ │ ├── SequencePosition.cs
│ │ │ ├── StandardFormat.cs
│ │ │ ├── TlsOverPerCoreLockedStacksArrayPool.cs
│ │ │ └── Utilities.cs
│ │ ├── Collections
│ │ │ ├── Concurrent.EnumerablePartitionerOptions,gte_fx_4.5,is_core,is_std.cs
│ │ │ ├── Concurrent.EnumerablePartitionerOptions,lt_fx_4.5.cs
│ │ │ ├── ConcurrentExtensions.cs
│ │ │ ├── Concurrent,gte_fx_4.0,is_core,is_std.cs
│ │ │ ├── Concurrent,lt_fx_4.0
│ │ │ │ ├── ConcurrentBag.cs
│ │ │ │ ├── ConcurrentDictionary.cs
│ │ │ │ ├── ConcurrentQueue.cs
│ │ │ │ ├── ConcurrentQueueSegment.cs
│ │ │ │ ├── ConcurrentStack.cs
│ │ │ │ ├── IProducerConsumerCollection.cs
│ │ │ │ ├── IProducerConsumerCollectionDebugView.cs
│ │ │ │ ├── OrderablePartitioner.cs
│ │ │ │ ├── Partitioner.cs
│ │ │ │ └── PartitionerStatic.cs
│ │ │ ├── Generic
│ │ │ │ ├── IReadOnlyCollections,gte_fx_4.5,is_std,is_core.cs
│ │ │ │ └── IReadOnlyCollections,lt_fx_4.5.cs
│ │ │ ├── HashHelpers.cs
│ │ │ ├── IStructuralTypes,gte_fx_4.0,is_std,is_core.cs
│ │ │ └── IStructuralTypes,lt_fx_4.0.cs
│ │ ├── Diagnostics
│ │ │ └── CodeAnalysis
│ │ │ ├── ExtraDynamicallyAccessedMemberTypes.cs
│ │ │ ├── ILLinkAttributes,gte_core_5.0.cs
│ │ │ ├── ILLinkAttributes,lt_core_5.0,is_std,is_fx
│ │ │ │ ├── DynamicallyAccessedMembersAttribute.cs
│ │ │ │ └── DynamicallyAccessedMemberTypes.cs
│ │ │ ├── UnscopedRefAttribute,gte_core_7.0.cs
│ │ │ └── UnscopedRefAttribute,is_fx,is_std,lt_core_7.0.cs
│ │ ├── EnvironmentEx.cs
│ │ ├── Gen2GcCallback.cs
│ │ ├── HashCode,gte_core_2.1,gte_std_2.1.cs
│ │ ├── HashCode,is_fx,lt_core_2.1,lt_std_2.1.cs
│ │ ├── IO
│ │ │ └── StreamExtensions.cs
│ │ ├── MathEx.cs
│ │ ├── Memory,gte_std_2.1,gte_core_2.1.cs
│ │ ├── Memory,is_fx,lt_core_2.1,lt_std_2.1
│ │ │ ├── Memory.cs
│ │ │ ├── MemoryDebugView.cs
│ │ │ ├── MemoryExtensions.cs
│ │ │ ├── MemoryExtensions.Portable.cs
│ │ │ ├── Pinnable.cs
│ │ │ ├── ReadOnlyMemory.cs
│ │ │ ├── ReadOnlySpan.cs
│ │ │ ├── ReadOnlySpan.Portable.cs
│ │ │ ├── Runtime
│ │ │ │ └── InteropServices
│ │ │ │ ├── MemoryMarshal.cs
│ │ │ │ ├── MemoryMarshal.Portable.cs
│ │ │ │ └── SequenceMarshal.cs
│ │ │ ├── Span.cs
│ │ │ ├── SpanDebugView.cs
│ │ │ ├── SpanHelpers.BinarySearch.cs
│ │ │ ├── SpanHelpers.Byte.cs
│ │ │ ├── SpanHelpers.Char.cs
│ │ │ ├── SpanHelpers.Portable.cs
│ │ │ ├── SpanHelpers.T.cs
│ │ │ └── Span.Portable.cs
│ │ ├── Numerics
│ │ │ ├── BitOperationsEx.cs
│ │ │ ├── BitOperations,gte_core_3.0.cs
│ │ │ └── BitOperations,lt_core_3.0,is_std,is_fx.cs
│ │ ├── Reflection
│ │ │ ├── TypeInfo,gte_fx_4.5,is_core,is_std.cs
│ │ │ └── TypeInfo,lt_fx_4.5
│ │ │ ├── DelegatingTypeInfo.cs
│ │ │ ├── IntrospectionExtensions.cs
│ │ │ ├── IReflectableType.cs
│ │ │ └── TypeInfo.cs
│ │ ├── Runtime
│ │ │ ├── CompilerServices
│ │ │ │ ├── CallerArgumentExpressionAttribute,gte_core_3.0.cs
│ │ │ │ ├── CallerArgumentExpressionAttribute,lt_core_3.0,is_std,is_fx.cs
│ │ │ │ ├── CallerInfoAttributes,gte_fx_4.5,is_std,is_core.cs
│ │ │ │ ├── CallerInfoAttributes,lt_fx_4.5.cs
│ │ │ │ ├── ConditionalWeakTableExtensions.cs
│ │ │ │ ├── ConditionalWeakTable,gte_fx_4.0,is_std,is_core.cs
│ │ │ │ ├── ConditionalWeakTable,lt_fx_4.0.cs
│ │ │ │ ├── DefaultInterpolatedStringHandler,gte_core_6.0.cs
│ │ │ │ ├── DefaultInterpolatedStringHandler,is_std,is_fx,lt_core_6.0.cs
│ │ │ │ ├── DisableRuntimeMarshallingAttribute,gte_core_7.0.cs
│ │ │ │ ├── DisableRuntimeMarshallingAttribute,is_std,is_fx,lt_core_7.0.cs
│ │ │ │ ├── InterpolatedStringHandlerAttribute,gte_core_6.0.cs
│ │ │ │ ├── InterpolatedStringHandlerAttribute,is_std,is_fx,lt_core_6.0.cs
│ │ │ │ ├── ITuple.cs
│ │ │ │ ├── ModuleInitializerAttribute,gte_core_5.0.cs
│ │ │ │ └── ModuleInitializerAttribute,lt_core_5.0,is_std,is_fx.cs
│ │ │ ├── DependentHandle,gte_core_6.0.cs
│ │ │ ├── DependentHandle,is_fx,is_std,lt_core_6.0.cs
│ │ │ └── InteropServices
│ │ │ ├── DefaultDllImportSearchPathsAttribute,gte_fx_4.5,is_core,is_std.cs
│ │ │ ├── DefaultDllImportSearchPathsAttribute,lt_fx_4.5.cs
│ │ │ └── MarshalEx.cs
│ │ ├── StringComparerEx.cs
│ │ ├── StringExtensions.cs
│ │ ├── Text
│ │ │ └── StringBuilderExtensions.cs
│ │ ├── Threading
│ │ │ ├── MonitorEx.cs
│ │ │ ├── SpinLock,gte_fx_4.0,is_std,is_core.cs
│ │ │ ├── SpinLock,lt_fx_4.0.cs
│ │ │ ├── ThreadLocal,gte_fx_4.0,is_std,is_core.cs
│ │ │ ├── ThreadLocal,lt_fx_4.0.cs
│ │ │ ├── Volatile,gte_fx_4.5,is_core,is_std.cs
│ │ │ └── Volatile,lt_fx_4.5.cs
│ │ ├── ThrowHelper.cs
│ │ ├── Tuple,gte_fx_4.0,is_std,is_core.cs
│ │ ├── Tuple,lt_fx_4.0.cs
│ │ ├── TypeExtensions.cs
│ │ ├── ValueTuple,is_core,is_std,gte_fx_4.5.cs
│ │ ├── ValueTuple,lt_fx_4.5.cs
│ │ ├── WeakReference.T,gte_fx_4.5,is_std,is_core.cs
│ │ └── WeakReference.T,lt_fx_4.5.cs
│ ├── MonoMod.Backports.Tasks
│ │ ├── FilterTfmsTask.cs
│ │ └── MonoMod.Backports.Tasks.csproj
│ ├── MonoMod.Core
│ │ ├── ICoreDetourBase.cs
│ │ ├── ICoreDetour.cs
│ │ ├── ICoreNativeDetour.cs
│ │ ├── IDetourFactory.cs
│ │ ├── Interop
│ │ │ ├── _Assembly.cs
│ │ │ ├── Attributes
│ │ │ │ ├── FatInterfaceAttribute.cs
│ │ │ │ └── MultipurposeSlotOffsetTableAttribute.cs
│ │ │ ├── CoreCLR.cs
│ │ │ ├── CoreCLR.V60.cs
│ │ │ ├── CoreCLR.V70.cs
│ │ │ ├── CoreCLR.V80.cs
│ │ │ ├── Fx.cs
│ │ │ ├── Fx.V48.cs
│ │ │ ├── OSX.cs
│ │ │ ├── PCSTR.cs
│ │ │ ├── Unix.cs
│ │ │ └── Windows.cs
│ │ ├── MonoMod.Core.csproj
│ │ ├── Platforms
│ │ │ ├── Abi.cs
│ │ │ ├── ArchitectureFeature.cs
│ │ │ ├── Architectures
│ │ │ │ ├── AltEntryFactories
│ │ │ │ │ └── IcedAltEntryFactory.cs
│ │ │ │ ├── asminc
│ │ │ │ │ └── dwarf_eh.inc
│ │ │ │ ├── build-asm.ps1
│ │ │ │ ├── DetourKindBase.cs
│ │ │ │ ├── Shared.cs
│ │ │ │ ├── x86
│ │ │ │ │ ├── stubs_x86.asm
│ │ │ │ │ └── stubs_x86.map
│ │ │ │ ├── x86_64
│ │ │ │ │ ├── dwarf_eh.inc
│ │ │ │ │ ├── exhelper_linux_macos_shared.asm
│ │ │ │ │ ├── exhelper_linux_x86_64.asm
│ │ │ │ │ ├── exhelper_linux_x86_64.so
│ │ │ │ │ ├── exhelper_macos_x86_64.asm
│ │ │ │ │ ├── exhelper_macos_x86_64.dylib
│ │ │ │ │ ├── libSystem.dylib
│ │ │ │ │ ├── libSystem.shim.asm
│ │ │ │ │ ├── llvm.patch
│ │ │ │ │ ├── macros.inc
│ │ │ │ │ ├── nasm.patch
│ │ │ │ │ ├── stubs_x86_64.asm
│ │ │ │ │ ├── stubs_x86_64.map
│ │ │ │ │ ├── test.asm
│ │ │ │ │ └── test.cpp
│ │ │ │ ├── x86_64Arch.cs
│ │ │ │ ├── x86Arch.cs
│ │ │ │ └── x86Shared.cs
│ │ │ ├── FeatureFlags.cs
│ │ │ ├── IAltEntryFactory.cs
│ │ │ ├── IArchitecture.cs
│ │ │ ├── IMemoryAllocator.cs
│ │ │ ├── INativeExceptionHelper.cs
│ │ │ ├── IRuntime.cs
│ │ │ ├── ISystem.cs
│ │ │ ├── Memory
│ │ │ │ ├── PagedMemoryAllocator.cs
│ │ │ │ └── QueryingPagedMemoryAllocator.cs
│ │ │ ├── PlatformTriple.cs
│ │ │ ├── PlatformTripleDetourFactory.cs
│ │ │ ├── RuntimeFeature.cs
│ │ │ ├── Runtimes
│ │ │ │ ├── Core21Runtime.cs
│ │ │ │ ├── Core30Runtime.cs
│ │ │ │ ├── Core31Runtime.cs
│ │ │ │ ├── Core50Runtime.cs
│ │ │ │ ├── Core60Runtime.cs
│ │ │ │ ├── Core70Runtime.cs
│ │ │ │ ├── Core80Runtime.cs
│ │ │ │ ├── CoreBaseRuntime.cs
│ │ │ │ ├── FxBaseRuntime.cs
│ │ │ │ ├── FxCLR2Runtime.cs
│ │ │ │ ├── FxCLR4Runtime.cs
│ │ │ │ ├── FxCoreBaseRuntime.cs
│ │ │ │ └── MonoRuntime.cs
│ │ │ ├── SimpleNativeDetour.cs
│ │ │ ├── SystemFeature.cs
│ │ │ └── Systems
│ │ │ ├── LinuxSystem.cs
│ │ │ ├── MacOSSystem.cs
│ │ │ ├── PosixExceptionHelper.cs
│ │ │ ├── SystemVABI.cs
│ │ │ └── WindowsSystem.cs
│ │ └── Utils
│ │ ├── AddressKind.cs
│ │ ├── AddressMeaning.cs
│ │ ├── BytePatternCollection.cs
│ │ ├── BytePattern.cs
│ │ ├── IcedExtensions.cs
│ │ └── IInitialize.cs
│ ├── MonoMod.DebugIL
│ │ ├── DebugILGenerator.cs
│ │ ├── DebugILGeneratorExt.cs
│ │ ├── DebugILWriter.cs
│ │ ├── ExceptionBlock.cs
│ │ ├── MonoMod.DebugIL.csproj
│ │ └── Program.cs
│ ├── MonoMod.FrameworkTests
│ │ ├── MonoMod.FrameworkTests.csproj
│ │ └── Program.cs
│ ├── MonoMod.ILHelpers
│ │ ├── Assembly.il
│ │ ├── Attributes.il
│ │ ├── CompatibilitySuppressions.xml
│ │ ├── MonoMod.ILHelpers.il
│ │ ├── MonoMod.ILHelpers.ilproj
│ │ └── System.Runtime.CompilerServices.Unsafe.il
│ ├── MonoMod.ILHelpers.Patcher
│ │ ├── MonoMod.ILHelpers.Patcher.csproj
│ │ └── Program.cs
│ ├── MonoMod.Patcher
│ │ ├── InlineRT
│ │ │ ├── MonoModRule.cs
│ │ │ ├── MonoModRulesManager.cs
│ │ │ └── MonoModRulesModder.cs
│ │ ├── Modifiers
│ │ │ ├── MonoModAdded.cs
│ │ │ ├── MonoModConstructor.cs
│ │ │ ├── MonoModCustomAttribute.cs
│ │ │ ├── MonoModEnumReplace.cs
│ │ │ ├── MonoModForceCall.cs
│ │ │ ├── MonoModForceCallvirt.cs
│ │ │ ├── MonoModHook.cs
│ │ │ ├── MonoModIfFlag.cs
│ │ │ ├── MonoModIgnore.cs
│ │ │ ├── MonoModLinkFrom.cs
│ │ │ ├── MonoModLinkTo.cs
│ │ │ ├── MonoModNoNew.cs
│ │ │ ├── MonoModOnPlatform.cs
│ │ │ ├── MonoModOriginal.cs
│ │ │ ├── MonoModOriginalName.cs
│ │ │ ├── MonoModPatch.cs
│ │ │ ├── MonoModPublic.cs
│ │ │ ├── MonoModRemove.cs
│ │ │ ├── MonoModReplace.cs
│ │ │ ├── MonoMod__SafeToCopy__.cs
│ │ │ └── MonoModTargetModule.cs
│ │ ├── MonoModder.cs
│ │ ├── MonoMod.Patcher.csproj
│ │ ├── PatcherExtensions.cs
│ │ └── Program.cs
│ ├── MonoMod.RuntimeDetour
│ │ ├── _Assembly.cs
│ │ ├── DetourConfig.cs
│ │ ├── DetourContext.cs
│ │ ├── DetourManager.Managed.cs
│ │ ├── DetourManager.Native.cs
│ │ ├── DetourManager.Shared.cs
│ │ ├── Extensions.cs
│ │ ├── Hook.cs
│ │ ├── HookGen
│ │ │ └── HookEndpointManager.cs
│ │ ├── IDetour.cs
│ │ ├── ILHook.cs
│ │ ├── Introspection
│ │ │ ├── DetourBase.cs
│ │ │ ├── DetourCollection.cs
│ │ │ ├── DetourInfo.cs
│ │ │ ├── FunctionDetourInfo.cs
│ │ │ ├── ILHookCollection.cs
│ │ │ ├── ILHookInfo.cs
│ │ │ ├── MethodDetourInfo.cs
│ │ │ ├── NativeDetourCollection.cs
│ │ │ └── NativeDetourInfo.cs
│ │ ├── MonoMod.RuntimeDetour.csproj
│ │ ├── NativeHook.cs
│ │ └── TrampolinePool.cs
│ ├── MonoMod.RuntimeDetour.HookGen
│ │ ├── HookGenerator.cs
│ │ ├── MonoMod.RuntimeDetour.HookGen.csproj
│ │ └── Program.cs
│ ├── MonoMod.SourceGen.Internal
│ │ ├── AnalyzerReleases.Shipped.md
│ │ ├── AnalyzerReleases.Unshipped.md
│ │ ├── AssemblyInfoGenerator.cs
│ │ ├── Cil
│ │ │ └── ILOverloadGenerator.cs
│ │ ├── CodeBuilder.cs
│ │ ├── Extensions
│ │ │ ├── ISymbolExtensions.cs
│ │ │ └── ITypeSymbolExtensions.cs
│ │ ├── GenHelpers.cs
│ │ ├── Helpers
│ │ │ ├── EquatableArray.cs
│ │ │ ├── HashCode.cs
│ │ │ ├── ImmutableArrayBuilder.cs
│ │ │ ├── ObjectPool.cs
│ │ │ └── SourceTextReader.cs
│ │ ├── Interop
│ │ │ ├── FatInterfaceGenerator.cs
│ │ │ └── MultipurposeSlotOffsetGenerator.cs
│ │ ├── MonoMod.SourceGen.Internal.csproj
│ │ └── Utils
│ │ └── FastDelegateInvokersGenerator.cs
│ ├── MonoMod.UnitTest
│ │ ├── Core
│ │ │ ├── BytePatternCollection.cs
│ │ │ └── TestPagedMemoryAllocator.cs
│ │ ├── DynamicDataTest.cs
│ │ ├── DynamicMethodDefinitionTest.cs
│ │ ├── FieldOrderTest.cs
│ │ ├── GenericComparisonTests.cs
│ │ ├── Github
│ │ │ └── Issue171.cs
│ │ ├── HookGen
│ │ │ └── HookGenRunTest.cs
│ │ ├── lib
│ │ │ ├── 0Harmony.dll
│ │ │ └── 0Harmony.xml
│ │ ├── ModInteropTest.cs
│ │ ├── MonoMod.UnitTest.csproj
│ │ ├── RuntimeDetour
│ │ │ ├── AssemblyLoadContextHookTest.cs
│ │ │ ├── DetourEmptyTest.cs
│ │ │ ├── DetourExtTest.cs
│ │ │ ├── DetourMemoryTest.cs
│ │ │ ├── DetourModifyTest.cs
│ │ │ ├── DetourOrderTest.cs
│ │ │ ├── DetourTest.cs
│ │ │ ├── DisableInliningTest.cs
│ │ │ ├── DynamicHookGenTest.cs
│ │ │ ├── EnumHookArgumentExceptionTest.cs
│ │ │ ├── HarmonyBridgeTest.cs
│ │ │ ├── HookEndpointManagerTest.cs
│ │ │ ├── HookTest.cs
│ │ │ ├── ILCursorTest.cs
│ │ │ ├── ILHookPoisonTest.cs
│ │ │ ├── ILHookTest.cs
│ │ │ ├── JITExceptionTest.cs
│ │ │ ├── JitHookRegressionTest.cs
│ │ │ ├── MultiHookTest.cs
│ │ │ ├── MultiHookUnitTestAutomaticRegistration.cs
│ │ │ ├── NativeDetourTest.cs
│ │ │ ├── ReturnBufferTest.cs
│ │ │ ├── StructMagicTest.cs
│ │ │ └── TieredCompilationTests.cs
│ │ ├── SkipRemoteLinuxMonoFactAttribute.cs
│ │ ├── TestLogHelpers.cs
│ │ └── TestObject.cs
│ └── MonoMod.Utils
│ ├── _
│ │ └── Switches.cs
│ ├── ArchitectureKind.cs
│ ├── AssertionFailedException.cs
│ ├── Cil
│ │ ├── CecilILGenerator.cs
│ │ ├── FastDelegateInvokers.cs
│ │ ├── ILContext.cs
│ │ ├── ILCursor.cs
│ │ ├── ILGeneratorShim.cs
│ │ ├── ILGeneratorShim.Proxy.cs
│ │ ├── ILLabel.cs
│ │ ├── ILOpcodes.txt
│ │ └── ILPatternMatchingExt.cs
│ ├── DataScope.cs
│ ├── DMDGenerator.cs
│ ├── DMDGenerators
│ │ ├── DMDCecilGenerator.cs
│ │ ├── DMDEmit.CreateMethodProxy.cs
│ │ ├── DMDEmit.cs
│ │ ├── DMDEmitDynamicMethodGenerator.cs
│ │ ├── DMDEmit.EmitCallSite.cs
│ │ └── DMDEmitMethodBuilderGenerator.cs
│ ├── DynamicData.cs
│ ├── DynamicMethodDefinition.CopyMethodToDefinition.cs
│ ├── DynamicMethodDefinition.cs
│ ├── DynamicMethodReference.cs
│ ├── DynamicReferenceManager.cs
│ ├── DynData.cs
│ ├── DynDll.Backend.cs
│ ├── DynDll.cs
│ ├── Extensions.CecilCIL.cs
│ ├── Extensions.Cecil.cs
│ ├── Extensions.CecilIsRefl.cs
│ ├── Extensions.CecilShims.cs
│ ├── Extensions.Collections.cs
│ ├── Extensions.cs
│ ├── Extensions.Delegate.cs
│ ├── Extensions.Find.cs
│ ├── Extensions.GetID.cs
│ ├── Extensions.GetPatchName.cs
│ ├── Extensions.Relinker.cs
│ ├── Extensions.Unsafe.cs
│ ├── Extensions.Utils.cs
│ ├── Extensions.UtilsIL.cs
│ ├── FastReflectionHelper.cs
│ ├── GenericMethodInstantiationComparer.cs
│ ├── GenericTypeInstantiationComparer.cs
│ ├── Helpers.cs
│ ├── Helpers.IO.cs
│ ├── ICallSiteGenerator.cs
│ ├── IgnoresAccessChecksToAttribute.cs
│ ├── Interop
│ │ ├── _Assembly.cs
│ │ ├── OSX.cs
│ │ ├── Unix.cs
│ │ └── Windows.cs
│ ├── LazyDisposable.cs
│ ├── Logs
│ │ ├── DebugFormatter.cs
│ │ ├── DebugLog.cs
│ │ ├── DebugLogInterpolatedStringHandler.cs
│ │ ├── FormatIntoInterpolatedStringHandler.cs
│ │ ├── IDebugFormattable.cs
│ │ └── LogLevel.cs
│ ├── MethodSignature.cs
│ ├── MMReflectionImporter.cs
│ ├── ModInterop
│ │ ├── ModExportName.cs
│ │ ├── ModImportName.cs
│ │ └── ModInteropManager.cs
│ ├── MonoMod.Utils.csproj
│ ├── OSKind.cs
│ ├── PlatformDetection.cs
│ ├── ReflectionHelper.cs
│ ├── ReflectionHelper.FixReflectionCache.cs
│ ├── ReflectionHelper.GetRealDeclaringType.cs
│ ├── ReflectionHelper.ParseCallSite.cs
│ ├── RelinkFailedException.cs
│ ├── RelinkTargetNotFoundException.cs
│ ├── RuntimeKind.cs
│ └── WeakReferenceComparer.cs
└── tools
├── BannedSymbols.txt
├── CheckTargetRuntimeTemplate.targets
├── Common.CS.props
├── Common.CS.targets
├── Common.IL.props
├── Common.IL.targets
├── Common.NoTargets.props
├── Common.props
├── Common.targets
├── MonoMod.CheckTargetRuntime.targets
├── NuGet.props
├── NuGet.targets
├── tools.csproj
└── windbg-memlog.js
79 directories, 459 files
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论