如何从内部到公共批量修改.Net程序集中的类修饰符?

时间:2018-11-03 06:08:57

标签: .net .net-assembly decompiling

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

1 个答案:

答案 0 :(得分:1)

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

使用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();
    }
}