dotnet/runtime

Efficient API to stream from a MetadataReader to a MetadataBuilder with modifications

Open

#30,443 创建于 2019年7月31日

在 GitHub 查看
 (10 评论) (1 反应) (0 负责人)C# (5,445 fork)batch import
area-System.Reflection.Metadatahelp wanted

仓库指标

Star
 (17,886 star)
PR 合并指标
 (平均合并 12天 11小时) (30 天内合并 661 个 PR)

描述

Rewriting IL using System.Reflection.Metadata seems to bit a bit of a mind-melting endeavor. Due to the order-dependent relations between the tables, and most binary blobs needing row references to be patched, I haven't been able to find a scalable pattern for a single-pass read and write. It feels like something like this should be in theory possible. Maybe with something like a visitor pattern?

I'd like to do some things that are purely additive, such as inserting a module initializer, and others that subtract or modify rows, like generating ref assemblies from third party framework implementation assemblies. Some of these things will slow down every build because I want to put them in post-processing NuGet packages, so one goal is absolutely minimal overhead.

Does this sound like something that can be made generally useful and that you'd be willing to accept in SR.Metadata and keep up to date?

贡献者指南