ILPack: saving assemblies to disk
summary
ILPack claims to restore the missing AssemblyBuilder.Save on .NET Core by taking in-memory assemblies and emitting valid DLLs that reload unchanged, implemented by walking runtime objects via System.Reflection and emitting metadata with System.Reflection.Metadata to rebuild all tables, blobs and method bodies. It debugs invalid IL with real files using ILVerify, ILSpy/dotPeek, and is used in production at Lokad generating about 1 GB of CIL per day. Source is at https://github.com/Lokad/ILPack and the project actively handles generics, complex types and method bodies.
AI-written summary · about
chapters (17)
- 0:00ILPack introduction
- 1:25What is an assembly
- 3:10Why ILPack reverses loading
- 9:12Runtime code with Reflection.Emit
- 13:25LINQ Expressions limits
- 15:58Source generators impact
- 17:43Locat supply chain use
- 23:44Debugging assemblies need
- 29:16.NET Core gap solution
- 31:27Reflection meets Metadata APIs
- 33:35Metadata tables and IL
- 36:43Encoding method bodies
- 39:35ILPack open-source model
- 40:21Testing edge cases
- 42:10Generics metadata issues
- 43:58Backward compatibility
- 45:42Junior dev learning advice
related talks
54mWhat's Inside: A .NET assembly! (and how does Hot Reload change it?)
44mPut your C#, VB and F# projects and packaging on a diet
19mWhat It Takes to Make and Maintain a Buildpack and Stacks
53mTools and practices to help you deal with legacy code
56mHow To "Dot" Into Anything, Anywhere, Anytime (Facilitating Data-First Programming)
31mBuilding WebAssembly Like It's 2011
52m.NET Core CLI and Global Tools
35mIntro: Cloud Native Buildpacks
