1

我是 Cecil 的新手,我创建了一个简单的测试。它将所有命名空间/类型重命名为随机字符串。

var assembly = AssemblyDefinition.ReadAssembly(@"C:\somexe.exe");
foreach (var t in assembly.MainModule.Types) {
    t.Namespace = Guid.NewGuid().ToString();
    t.Name = Guid.NewGuid().ToString();               
}

启动可执行文件后运行,但形式为空(它是 winforms)。

我以为 CLR 不关心名字?我不应该重命名什么?还是我做错了什么?

4

1 回答 1

2

很多事情,特别是在winforms中,都依赖于反射。反射非常关心名称。这也可能与资源和资源文件不匹配有关。此外,许多属性可能包括类型信息作为字符串,这可能会影响事物。序列化也可以(尤其是 BinaryFormatter)。

但是,如果没有更多上下文(主要是:代码),我们只能猜测。

于 2012-07-21T16:49:41.317 回答