如何将 .Net 程序集中的 类 修饰符从内部批量修改为 public?

How to batch modify classes modifier in a .Net Assembly from internal to public?

我有一个第三方 .Net 程序集 dll,我想知道是否有可以用来快速将所有 internal class 更新为 public class 的工具。我可以使用 dnSpy 对它们进行逐个修改,但效率不高。

你可以为此编写一个小工具。

使用Mono.Cecil并遍历Module中的所有类型并将IsPublic更改为true。之后只需调用 Write.

像这样:

static void Main(string[] args)
{
    using (AssemblyDefinition a = AssemblyDefinition.ReadAssembly(args[0], new ReaderParameters { ReadWrite = true }))
    {
        foreach (var type in a.Modules[0].Types)
        {
            if (type.IsNotPublic)
                type.IsPublic = true;
        }
        a.Write();
    }
}